1

生徒のクラスごとに保護者の電子メール アドレスのリストをフィルター処理したいと考えています。

これが私のモデルの単純化です:

Class District
 has_many :schools
 has_many :families
 has_many :children, :through => :families
 has_many :parents, :through => :families
 has_many :enrollments, :through => :children
end


Class Enrollments
 belongs_to :child
 belongs_to :classroom
end

電子メール アドレスは親レコードに関連付けられており、教室 ID の配列で電子メールをフィルター処理したいと考えています。

これを機能させることができます:

idees = [49, 50]
current_district = District.first
@emails = current_district.parents.includes(:family => { :children => { :enrollments => {:classroom => { :program => :location }}}}).where("family_id IN (?)", idees)
# Returns families with ID 49 and 50

しかし、私はこのようなものを機能させることはできません

idees = [49, 50]
current_district = District.first
@emails = current_district.parents.includes(:family => { :children => { :enrollments => {:classroom => { :program => :location }}}}).where("family.children.enrollments.classroom_id IN (?)", idees)
# Returns: PGError: ERROR:  cross-database references are not implemented: family.children.enrollment.classroom_id

私は何を間違っていますか、またはこのクエリを作成するための別のより良い方法はありますか?

4

1 に答える 1

0

下の行が問題です。

where("family.children.enrollments.classroom_id IN (?)", idees)

次のように変更します。

where("enrollments.classroom_id IN (?)", idees)
于 2012-07-27T19:32:23.650 に答える