Более эффективный поиск или создание нескольких записей в Rails

У меня есть приложение, которое должно рассылать приглашения пользователей на мероприятия. Когда пользователь приглашает друга (пользователя) на событие, создается новая запись, связывающая пользователя с событием, если таковая еще не существует. Мои модели состоят из user, event и events_user.

class Event
    def invite(user_id, *args)
        user_id.each do |u|
            e = EventsUser.find_or_create_by_event_id_and_user_id(self.id, u)
            e.save!
        end
    end
end

Использование

Event.first.invite([1,2,3])

Я не думаю, что приведенный выше способ является наиболее эффективным способом выполнения моей задачи. Я представил себе метод вроде

 Model.find_or_create_all_by_event_id_and_user_id

, но его не существует.

Модели без валидации

class User 
  has_many :events_users 
  has_many :events 
end 
class EventsUser 
  belongs_to :events 
  belongs_to :users 
end 
class Event 
  has_many :events_users 
  has_many :users, :through => :events_users 
end
5
задан Joey 2 March 2011 в 23:10
поделиться