为多对多关系rails创建范围



我想在Company模型中创建作用域,这样我就可以使用这一行

Company.customer

,以便选择所有具有客户类型的公司。

Company和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和公司之间的连接表)和"companies"

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

试试下面的

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

我想提出的一件事是,我认为你所做的比简单地在公司模型中添加一个company_type列有点过分。如果您不使用CompanyType用于其他任何内容,我建议您添加一列,而不是使用2个表。

相关内容

  • 没有找到相关文章

最新更新