2016-12-11 2 views
0

Ich habe drei Modelle, Organisation hat viele User hat viele Project.Schienen-Holen Sie sich alle Datensätze mit gleichen Großeltern

Wie Abfrage ich für alle Project, die zu derselben Organisation gehören?

Zur Zeit habe ich Project.joins(user: [:organisation]), aber das bekommt nur alle Project und gruppiert sie von User. Ich bin mir nicht sicher, wie man die Organisation Identifikation spezifiziert.

Antwort

1

Angenommen, Sie haben eine lokale Variable namens organisation, die mit der Organisation gefüllt ist, an der Sie interessiert sind, können Sie Ihrer Abfrage eine where hinzufügen.

Project.joins(user: [:organisation]).where('organisations.id = ?', organisation.id) 

Aber es könnte sinnvoller sein, die Assoziationen verwenden Sie eingerichtet haben (oder neu erstellen)

class User < ActiveRecord::Base 
    has_many :projects 
end 

class Organisation < ActiveRecord::Base 
    belongs_to :user 
    has_many :projects, through: :user 
end 

Dann können Sie Ihre Organisation für ihre Projekte fragen:

organisation = Organisation.find(params[:id]) 
organisation.projects 
Verwandte Themen