2015-05-10 123 views
0

我想列出按某個屬性分組的記錄。例如按屬性分組的記錄列表

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 

最明顯的方式做到這一點是查詢通過他們devices所有companies和循環,像:

- companies.each do |company| 
    %h3= company.title 
    %ul 
    - company.devices.each do |device| 
    %li= device.title 

但在這種情況下,我需要查詢所有companiesDevicesController和通他們去查看,以便列出所有的devices。這感覺不自然。 有更好的(rails-)方法嗎?

回答

0

您可以使用

includes(:devices) 

在查詢公司模型

讓我們假設, 在控制器,

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

從上面,你會得到所有相關設備每個具體的公司對象。 使用

包括(:設備)

就可以訪問company.devices不脫離視圖擊發附加查詢。 您將通過簡單的連接提高性能。

+0

當然,我可以做到這一點,但它感覺不太自然,因爲我必須查詢'公司'模型才能列出'devices'。 –

+0

您不需要查詢公司模型以便列出包含includes的設備。您可能會認爲company.devices會進行查詢,但它不會查詢數據庫。 – aashish