按属性分组记录列表

时间:2015-05-10 07:56:53

标签: ruby-on-rails

我想列出按某个属性分组的记录。例如

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。感觉不自然。 是否有更好的(轨道)方式?

1 个答案:

答案 0 :(得分:0)

您可以使用

includes(:devices)

查询公司模型

让我们假设, 在控制器中,

def index
  @companies = Company.last(10).includes(:devices)
end 

从上面,您将获得每个特定公司对象的所有关联设备。 使用

  

包括:(:设备)

将提供对company.devices的访问权限,而无需从视图中触发其他查询。 通过简单的连接,您将获得性能提升。

相关问题