У меня есть приложение, которое должно рассылать приглашения пользователей на мероприятия. Когда пользователь приглашает друга (пользователя) на событие, создается новая запись, связывающая пользователя с событием, если таковая еще не существует. Мои модели состоят из 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