Вы также можете сделать:
class Users < ActiveRecord::Base
has_many :meetings, :through => :meeting_participations
has_many :meeting_participations
end
class Meetings < ActiveRecord::Base
has_many :users, :through => :meeting_participations
has_many :meeting_participations
end
class MeetingParticipations < ActiveRecord::Base
belongs_to :user
belongs_to :meeting
scope :hidden, where(:hidden => true)
scope :visible, where(:hidden => false)
end
hidden
ется дополнительным логическим столбцом в таблице ассоциации m2m. Учитывая некоторыеUsers
экземплярcurrent_user
, Я хочу делать
current_user.meetings.visible
который будет получать коллекциюMeetings
для которого пользователь является участником, гдеhidden
столбецfalse
, Самое близкое, что я получил, это добавление следующей области кMeetings
класс
scope :visible, joins(:meeting_participations) & MeetingParticipation.visible
scope
фильтруетMeetings
противMeetingParticipations
таблицы, однако нет соединения / условия противMeetingParticipations
таблица, связанная сcurrent_user
.
Проблема с этим, еслиcurrent_user
а такжеanother_user
оба участники для некоторыхMeetings
Например,Meetings
запись в наборе результатов будет возвращена для каждого участника, который имеетhidden
установлен вfalse
, Еслиcurrent_user
имеетtrue
установить дляhidden
для всехMeetings
, еслиanother_user
является участником любой из тех же Встреч сhidden
установлен вfalse
, теMeetings
появится вMeetings.visible
набор результатов.
Возможно ли иметь область, как я уже упоминал выше, которая будет правильно присоединяться кUser
экземпляр? Если нет, может кто-нибудь порекомендовать решение этой проблемы?