2013-04-16 56 views
0

我想創建一個公司模型的範圍,這樣我就可以使用這條線創建許多範圍,許多關係軌

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和公司之間的連接表)和「公司「

如何填寫:公司模型中的客戶範圍?

回答

2

請嘗試以下

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

有一兩件事我想提出的是,我認爲你正在做的是有點大材小用不是簡單的企業模型添加company_type列。如果您沒有使用CompanyType進行其他任何操作,我建議您添加一列而不是使用2個表格。

+0

我沒有使用2個模型,因爲它是多對多的關係。公司可以是客戶類型和供應商類型。 – muhihsan

+0

是的,我明白了。你在其他地方使用CompanyType嗎?或者你在company_types中存儲了一些信息?或者您是否在使用它來動態添加公司類型?如果它只設置了2種類型,最好聲明一個使用附加2個表的常量。 – jvnill

+0

我使用表格是因爲可能會在稍後添加其他類型的公司。所以它會更容易:D Btw感謝您的幫助 – muhihsan