这就是我现在所拥有的。
current_user
.sites
.joins(:controllers)
.where('controllers.inspections_enabled = true')
.all(:include => [:controllers => [:inspections]])
这给了我:
“启用控制器的所有站点,包括所有控制器和检查”
我想要
“启用控制器的所有站点,并且仅包含'inspections_enabled = true'的控制器,以及所有子检查”
先谢谢
答案 0 :(得分:3)
您应该定义一个已定义条件的关联,请参阅docs
如果您确实希望只加载一个关联的某些成员 通常更自然地包括具有条件的关联 在它上面定义。
在你的情况下:
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])