我想列出按某个属性分组的记录。例如
class Device < ActiveRecord::Base
belongs_to :company
end
class Company < ActiveRecord::Base
has_many :devices
end
然后我想显示按devices
分组的所有company
,如下:
%ul Company 1
%li Device 1
%li Device 3
%ul Company 2
%li Device 2
%li Device 4
显而易见的方法是查询所有companies
并循环浏览devices
,如下所示:
- companies.each do |company|
%h3= company.title
%ul
- company.devices.each do |device|
%li= device.title
但在这种情况下,我需要查询companies
中的所有DevicesController
并将其传递给视图,以便列出所有devices
。感觉不自然。
是否有更好的(轨道)方式?
答案 0 :(得分:0)
您可以使用
includes(:devices)
查询公司模型
让我们假设, 在控制器中,
def index
@companies = Company.last(10).includes(:devices)
end
从上面,您将获得每个特定公司对象的所有关联设备。 使用
包括:(:设备)
将提供对company.devices的访问权限,而无需从视图中触发其他查询。 通过简单的连接,您将获得性能提升。