【问题标题】:Create scope for many to many relationship rails为多对多关系轨道创建范围
【发布时间】:2013-04-08 08:11:06
【问题描述】:

我想在公司模型中创建范围,以便我可以使用这条线

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

公司类型:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    试试下面的

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

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

    【讨论】:

    • 我确实使用了 2 个模型,因为它是多对多的关系。公司可以是客户类型和供应商类型。
    • 是的,我明白了。您在其他地方使用 CompanyType 吗?还是您在 company_types 中存储一些信息?还是您正在使用它来动态添加公司类型?如果仅设置为 2 种类型,最好声明一个使用额外 2 个表的常量。
    • 我使用该表是因为以后可能会添加另一种类型的公司。所以这会更容易:D顺便感谢您的帮助
    • 是的,这对您来说应该更容易。无需进行部署,它就可以工作:)
    猜你喜欢
    • 2012-05-10
    • 2014-10-18
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多