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
для hidden
для всех Meetings
, если another_user
является участником любого из тех же совещаний с hidden
, установленным на false
, те Meetings
появятся в Meetings.visible
набор результатов.
Возможно ли иметь область видимости, как я уже упоминал выше, которая будет правильно присоединяться к экземпляру User
? Если нет, может кто-то порекомендовать решение?