Rails 4 - 如何从 "has_many -> belongs_to" 关系中获取所有公司的列表?
Rails 4 - How to get list of all companies from the "has_many -> belongs_to" relation?
我有这样的模型结构:
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
...
我同意这里的命名约定很疯狂。
但是,有没有更好的方法获取组织blast中的公司列表?
谢谢
我认为您正在寻找 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
希望对您有所帮助:)
我有这样的模型结构:
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
...
我同意这里的命名约定很疯狂。
但是,有没有更好的方法获取组织blast中的公司列表?
谢谢
我认为您正在寻找 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
希望对您有所帮助:)