0

我的模型這種結構:Rails 4 - 如何從「has_many - > belongs_to」關係中獲取所有公司的列表?

class OrganizationBlast < ActiveRecord::Base 
    has_many :organization_blast_companies 
end 
class OrganizationBlastCompany < ActiveRecord::Base 
    belongs_to :organization_blast 
    belongs_to :company 
end 

我如何在鼓風所有公司的名單? 到目前爲止,我這樣做是這樣的:

organization_blast    = OrganizationBlast.find(params[:id]) 
organization_blast_companies = organization_blast.organization_blast_companies.includes(:company) 
organization_blast_companies.each do |organization_blast_company| 
    puts organization_blast_company.company.name 
    ... 

我這裏同意的命名約定是瘋了。

但是,有沒有更好的方式來獲得組織爆炸公司名單?

謝謝

回答

1

我認爲你正在尋找has_many :through關聯。

下面給出的設置模式:

class OrganizationBlast < ActiveRecord::Base 
    has_many :organization_blast_companies 
    has_many :companies, through: :organization_blast_companies 
end 
class OrganizationBlastCompany < ActiveRecord::Base 
    belongs_to :organization_blast 
    belongs_to :company 
end 

class Company < ActiveRecord::Base 
    has_many :organization_blast_companies 
    has_many :organization_blasts, through: :organization_blast_companies 
end 

然後,只需撥打organisation_blast.companies獲取與OrganizationBlast對象相關聯的所有公司。

organization_blast = OrganizationBlast.find(params[:id]) 
organization_blast_companies = organization_blast.companies 

參見:http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association

希望它能幫助:)

相關問題