为多对多关系轨道创建范围

时间:2013-04-16 03:31:28

标签: ruby-on-rails database scope many-to-many jointable

我想在公司模型中创建范围,以便我可以使用此行

Company.customer

为了选择所有拥有客户类型的公司。

公司与CompanyType之间的关系是多对多的。

公司:

class Company < ActiveRecord::Base
  attr_accessible :description, :name, :website, type_ids
  has_and_belongs_to_many :types, :class_name => "CompanyType"
  #scope :customer, where()
end

CompanyType:

class CompanyType < ActiveRecord::Base
  attr_accessible :name
  has_and_belongs_to_many :companies
end

对于数据库中的表,我有“company_types”表,“company_types_companies”(company_types和公司之间的连接表)和“公司”

如何填写公司模型中的客户范围?

1 个答案:

答案 0 :(得分:2)

尝试以下

scope :customers, joins(:types).where(company_types: { name: 'customer' })

我想提出的一点是,我认为你所做的事情有点过分,而不仅仅是在公司模型中添加company_type列。如果您没有使用CompanyType,我建议您添加一列而不是使用两个表。