2014-03-12 19 views
0

現在聯想什麼數據庫的結構需要,我有三個model 公司,商品和子類型一個公司選擇的類型和子類型

class Commodity < ActiveRecord::Base 
has_many :sub_types 
end 

class SubType < ActiveRecord::Base 
belongs_to :commodity 
end 

現在公司可以從列表後選擇商品它 將選擇子類型。所以在數據庫中跟蹤需要哪些字段。我認爲has_many :through是必需的,但不知道如何追蹤貨物及公司

+0

問題,是商品一對一的子類型(我知道這就是你的問題,只是雙重檢查)?如果是的話,該協會將得到照顧。至於公司與商品的關係,請查閱http://guides.rubyonrails.org/association_basics.html – Patrick

+0

@Patrick一個子類型只屬於一種商品,商品可以有多種子類型。現在用戶將能夠選擇一種商品,然後在該商品的提供的子類型中選擇子類型 –

+0

,因此請讓我看看我是否瞭解您的結構。 '公司'可以有許多'商品','商品'可以有許多'公司','商品'可以有許多'子類型',而'子類型'只能有一個'商品'。那是對的嗎?如果是這種情況,那麼「公司」和「商品」之間的多對多關係就是要走的路,但哪種類型取決於您的需求。你需要存儲關於協會的信息嗎? @amit_saxena說,你可以通過商品獲得'公司'的子類型。 – Patrick

回答

0

假設公司和商品選定的子類型有一對多的關係(而不是多對多),就可以做到以下幾點:

class Company < ActiveRecord::Base 
has_many :commodities 
has_many :sub_types, :through => :commodities 
end 

class Commodity < ActiveRecord::Base 
has_many :sub_types 
belongs_to :company 
end 

class SubType < ActiveRecord::Base 
belongs_to :commodity 
end 

company_object.sub_types會給你所有的子類型使用上述關係,給定的公司。

+0

公司可以爲公司選擇特定的子類型。多數民衆贊成我所要求的。找到商品的所有子類型很簡單 –

+0

我並不完全明白你在這裏需要什麼,但是要獲得給定商品的特定子類型,你可以使用'company_object.commodities.where(:name =>「商品名稱」)。 .first.sub_types'。如果你可以用一個例子來解釋,我可以嘗試和幫助你。 –

0

看起來是最好的選擇將是一個多態關聯

class SubType < ActiveRecord::Base 
    belongs_to :organization, polymorphic: true 
end 

class Company< ActiveRecord::Base 
    has_many :subtypes, as: :organization 
end 

class Commodity< ActiveRecord::Base 
    has_many :subtypes, as: :organization 
end 

然後,你將能夠引用@company.subtypes@commodity.subtypes,以及@subtype.organization

通過http://guides.rubyonrails.org/association_basics.html#polymorphic-associations 閱讀我希望這幫助

+0

不,不是這種情況。可能是我無法正確解釋我需要什麼。 MY BAD –

+0

對不起,如果我誤解了 – Patrick