2011-11-28 73 views
1

我有一個公司表和status_codes表 一家公司只能有一個STATUS_CODE設置Rails模型和協會

COMPANIES 
    id int PK 
    name varchar 
    status_code_id int FK 

STATUS_CODES 
id PK 
name varchar (Live, Inactive, Deleted) 

我想在鐵軌有如下型號此設置/協會

class Company < ActiveRecord::Base 
    has_one :status_code 
end 

class StatusCode < ActiveRecord::Base 
    belongs_to :company 
end 

belongs_to :company出現該問題,它期待在status_codes表的外鍵company_id ...

我基本上想要所有的狀態代碼在一張表中,所以如果我需要更改狀態代碼名稱,我只更改一次,所有公司都顯示最新更新的狀態代碼名稱...

我可以設置導軌嗎數據庫表格佈局還是有更好的方法來做到這一點?

回答

0

我相信在這種情況下你需要StatusCode有一個has_many:companies。這樣,一旦您更改了狀態代碼,所有公司都將顯示最新更新的狀態代碼名稱。

class Company < ActiveRecord::Base 
    belongs_to :status_code 
end 

class StatusCode < ActiveRecord::Base 
    has_many :companies 
end 

因此,您需要在您的公司表中使用status_code_id外鍵。

+0

感謝您的支持,這是什麼方式?沒有正確的讀取狀態代碼has_many:公司 –

+0

它可能一開始沒有正確讀取,但如果從OO的角度來考慮它,那麼它沒有任何錯誤,您只需編碼即可實現。這也不違背「rails方式」,因爲它是一個簡單的has_many關聯。 – alexs333

0

一般的經驗法則是,包含外鍵的關聯側應該有belongs_to :other_model,反之應該有has_many