0
  • ユーザーは多数のサイトを持っています
  • サイトには多くのコントローラーがあります
  • コントローラーには多くの検査があります

これは私が現時点で持っているものです。

current_user
   .sites
   .joins(:controllers)
   .where('controllers.inspections_enabled = true')
   .all(:include => [:controllers => [:inspections]])

これは私に与えます:

「すべてのコントローラーとインスペクションを含む、コントローラーが有効になっているすべてのサイト」

私が欲しい

「コントローラーが有効になっているすべてのサイトで、「inspections_enabled = true」を持つコントローラーのみが含まれ、すべての子インスペクションが含まれています」

前もって感謝します

4

1 に答える 1

3

条件を定義した関連付けを定義する必要があります。ドキュメントを参照してください

アソシエーションの一部のメンバーのみを積極的に読み込みたい場合は、通常、条件が定義されているアソシエーションを含める方が自然です。

あなたの場合:

class Site < ActiveRecord::Base
  has_many :inspections_enabled_controllers, 
           :class_name => 'Controller', 
           :conditions => ['inspections_enabled = ?', true]
end

current_user
    .sites
    .joins(:inspections_enabled_controllers)
    .all(:include => [:inspections])
于 2013-03-04T17:53:28.760 に答える