2011-11-28 170 views
1

我公司擁有一支Rails 3的模型設置

公司都處於一個狀態

我正自己在如何建立我協會在模型

基本上在意見困惑,我將有一個下降的狀態的下降和用戶選擇一個爲每個公司...

companies 
id 
name 
status_id 

company_statuses 
id 
status (Unknown, Live, Dissolved, etc...) 

我思考了使用company_statuses表的方式是,他們可以改變overtim e和簡單地更改表中的狀態的名稱一次更新所有公司等...

這是rails的方式?!,或者我會更好地硬編碼代碼中的值和手動更新數據庫需要改變?!

回答

0

公司有一個身份權嗎?如果是這種情況,這種關係是多對一的,並且不需要一個company_status鏈接表。只需將公司表配置爲具有狀態列。

我的Rails 3是一個有點生疏,但你的公司的模式將包括:

has_one :status 

而且你的狀態車型將擁有:

belongs_to :company 
+0

我還是有點困惑,你有一個has_one協會上面,但你說這種關係是多對一?此外,我需要一個表來保存數據庫中的狀態(company_statuses)。由於我有其他表格,狀態過於通用... –

+0

是的,has_one作爲公司存在「有一個」狀態。相反,狀態「belongs_to」一個公司(感謝瑞安編輯!)。您仍然可以擁有狀態表,其中包含唯一ID和狀態名稱。你的公司表將包含一個狀態外鍵(status_fk)。請注意,您不必擔心自己創建此密鑰,一旦您正確設置了關係,Rails應爲您處理此問題。 – Ger

+0

真的很困惑現在大聲笑...根據文檔「belongs_to」指定與另一個類的一對一關聯。只有當這個類包含外鍵時才應該使用這個方法。如果其他類包含外鍵,那麼你應該使用「has_one」來代替......它應該是我想的另一種方式! –

1

設法得到它的工作通過使用下面的代碼。這是一個has_many的關係不是has_one

class Company < ActiveRecord::Base 
    belongs_to :status_code 
end 

class StatusCode < ActiveRecord::Base 
    has_many :companies 
end