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 回答