0
class ConferenceSession < ActiveRecord::Base 

    has_many :conference_sessions 

end 


class ConferenceSession < ActiveRecord::Base 

    belongs_to :conference 

    has_and_belongs_to_many :users 

end 

class User < ActiveRecord::Base 

    has_and_belongs_to_many :conference_sessions 

end 

和conference_sesssions_users表。管理員可以允許特定人員參加特定會話。所以我想要形成一個查詢,只要用戶登錄並選擇一個會議,他就應該只允許看到管理員允許他訪問的那些會話。基於條件的軌道關聯查詢

我做這個做

scope :visibility, 
    lambda { |user_id| joins('INNER JOIN conference_sessions_users 
           ON conference_sessions_users.conference_session_id = conference_sessions.id'). 
           where('conference_sessions_users.user_id = ?', user_id) } 

,以獲得特定的會話,但這個只返回特定的人,如果會話的所有用戶可見,如果條件是相同的什麼什麼。

回答

0

你可以改變條件爲where(conference_sessions_users: { user_id: user_ids})這將翻譯成這樣的東西:WHERE conference_sessions_users.user_id in (1st_id, 2nd_id)。當然,你應該在這種情況下,通過ID的數組作爲user_id