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 

und einem conference_sesssions_users Tisch. Der Administrator kann bestimmten Personen erlauben, an einer bestimmten Sitzung teilzunehmen. Daher möchte ich eine Abfrage erstellen, dass, wenn sich ein Benutzer anmeldet und eine Konferenz auswählt, er nur die Sitzungen sehen darf, die ihm der Administrator erlaubt hat.Rails Verein Abfrage basierend auf Zustand

Ich habe das

, indem Sie die spezifische Sitzung zu erledigen
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) } 

aber dies gibt nur die spezifischen Menschen, was ist, wenn die Sitzung für alle Benutzer sichtbar ist, was sollte die Bedingung für die gleiche sein .

Antwort

0

könnten Sie den Zustand in where(conference_sessions_users: { user_id: user_ids}) ändern, was in etwa so aussehen würde: WHERE conference_sessions_users.user_id in (1st_id, 2nd_id). Natürlich sollten Sie Array von IDs in diesem Fall als user_id