2010-09-29 87 views
0

我有一個名爲Contacts的模型。什麼是在Rails中將狀態值建模爲關聯的正確方法?

聯繫人可以有不同的狀態爲「壞的,積極的,錯了......」

這些狀態可能需要隨着時間的推移而改變,但在所有的聯繫人,他們是相同的選項。

Contacts.rb 

belongs_to :status_contact 

StatusContacts.rb 
has_many :contacts 

然後我手動填充類型的狀態表中:

我應該這樣的模型呢?

然後我想使用Ajax單擊對應於某個值的按鈕以更新聯繫人的值。

回答

0

尚無明確答案--- I 認爲我需要使用該表,因爲它允許用戶添加和修改在其應用程序中使用的狀態類型。

1

看起來您正試圖確保您的狀態值始終限制爲您選擇的一組可能的答案。如果這就是你想要做的一切,那麼沒有特別需要單獨的表格。您可以在這裏使用ActiveRecord驗證的魔力。

首先,爲聯繫人創建一個名爲status的字符串數據庫列。

然後您可以使用驗證來確保值僅限於您想要的值。在Rails 3,你可以做這樣的:

validate :status, :inclusion => { :in => %w(bad positive wrong) } 

(如果你使用Rails 2,使用#validates_inclusion_of代替)

在ActiveRecord的,驗證檢查對象的值保存之前是有效的;它拒絕將對象持久保存到數據庫中,直到所有驗證通過。

+0

-1如果他們隨時間變化並需要更改所有聯繫人,她將需要一個單獨的表來存儲它們。 – theIV 2010-09-29 21:39:15

+0

我假定她的意思是說,可能值的集合可能隨時間而改變。如果我正確地閱讀它,添加一個單獨的表來限制字符串字段的值對於這個問題是不恰當的。 – Raphomet 2010-09-29 21:40:27

+0

也許你是對的,雖然它仍然沒有解決這個事實,即如果50個聯繫人「積極」和「積極」被刪除或改變,這50個聯繫人仍然是「積極的」。 – theIV 2010-09-29 21:47:34

0

你的命名讓我覺得有點不可思議 - ContactStatus對我來說聽起來好一些 - 但我認爲這是實現你想要的一般想法。

+0

我有ContactStatus,但因爲我有其他狀態,我認爲可能需要成爲獨立的模型(重新考慮這一點)我希望能夠在所有狀態下按照字母順序排列.... – Angela 2010-09-30 22:21:09

相關問題