Ruby on rails 为多对多关系rails创建范围

Ruby on rails 为多对多关系rails创建范围,ruby-on-rails,database,scope,many-to-many,jointable,Ruby On Rails,Database,Scope,Many To Many,Jointable,我想在公司模型中创建范围,这样我就可以使用这一行了 Company.customer 以选择所有具有客户类型的公司 公司和公司类型之间的关系是多对多的 公司: class Company < ActiveRecord::Base attr_accessible :description, :name, :website, type_ids has_and_belongs_to_many :types, :class_name => "CompanyType" #scop

我想在公司模型中创建范围,这样我就可以使用这一行了

Company.customer
以选择所有具有客户类型的公司

公司和公司类型之间的关系是多对多的

公司:

class Company < ActiveRecord::Base
  attr_accessible :description, :name, :website, type_ids
  has_and_belongs_to_many :types, :class_name => "CompanyType"
  #scope :customer, where()
end
class公司“CompanyType”
#范围:客户,其中()
结束
公司类型:

class CompanyType < ActiveRecord::Base
  attr_accessible :name
  has_and_belongs_to_many :companies
end
class CompanyType
对于数据库中的表,我有表“company\u types”、“company\u types\u companys”(company\u types和companys之间的连接表)和“companys”

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

尝试以下操作

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

我想提出的一件事是,我认为你所做的比简单地在公司模型中添加一个
company\u type
列有点过火。如果您不使用CompanyType进行其他操作,我建议您添加一列,而不是使用两个表。

我使用了两个模型,因为它是多对多关系。一家公司可以是客户类型和供应商类型。是的,我明白了。您是否在其他地方使用CompanyType?或者您是否将某些信息存储在公司类型中?或者您正在使用它动态添加公司类型?如果只设置为2种类型,最好声明一个使用额外2个表的常量。我使用该表是因为以后可能会添加另一种类型的公司。所以事情会变得更容易:顺便说一句,谢谢你的帮助。这对你来说应该更容易。不需要进行部署,它只会工作:)