【问题标题】:Rails 4 - How to get list of all companies from the "has_many -> belongs_to" relation?Rails 4 - 如何从“has_many -> belongs_to”关系中获取所有公司的列表?
【发布时间】:2016-03-01 02:30:13
【问题描述】:

我有这样的模型结构:

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
  ...

我同意这里的命名约定很疯狂。

但是,有没有更好的方法来获取组织爆炸中的公司列表?

谢谢

【问题讨论】:

    标签: ruby-on-rails activerecord model rails-activerecord has-many


    【解决方案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

    希望对你有帮助:)

    【讨论】:

      猜你喜欢
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      相关资源
      最近更新 更多