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
,我想要做的連接範圍:has_many:關聯
current_user.meetings.visible
將檢索Meetings
一個集合,它的用戶是參與者,其中hidden
列false
。我已經得到最接近的是添加以下範圍的Meetings
類
scope :visible, joins(:meeting_participations) & MeetingParticipation.visible
的scope
並過濾Meetings
對MeetingParticipations
表,但沒有加入對相關current_user
的MeetingParticipations
表/條件。
這樣做的問題是,如果current_user
和another_user
都是參加一些Meetings
例如,Meetings
記錄結果集中將返回對於具有hidden
設置爲false
每個參與者。如果current_user
有hidden
true
爲所有Meetings
,如果another_user
在任何與hidden
設置爲false
那些相同的會議的參與者,這些Meetings
將出現在Meetings.visible
結果集。
是否可以像上面提到的那樣能夠正確加入User
實例?如果不是,有人可以推薦一個解決方案嗎?
大問題! – deivid 2015-03-17 15:32:44