2010-07-09 39 views
7

我想要有一個Status模型,在用戶定義的設置(並且不同的用戶可能具有不同的狀態值)後,模型會相對靜態。我應該在軌道上使用ruby中的has_one或belongs_to嗎?

該狀態可以適用於不同的型號,如ContactEvent

因此受到contact.status返回的狀態將不同於event.status

我想設計的應用程序,以便狀態表有不同的類型(contactsevents)。

什麼是正確的策略和格式?

我想在Contact模型聲明:has_one Status, 並在:contacts表存儲:status_id的。同上Event

:statuses表將具有狀態值,類型和日期。

這是否有意義?你能提出一個更好的方法嗎?

回答

7

有一個guide on this非常問題。你的情況稍有不同,因爲你的狀態模型看起來好像是多態的,因爲不同的事物將是'可定位的'。

要回答你的問題,聯繫/事件has_one狀態確實對我有意義。

+1

我的狀態模型是多態的....我編輯它以上....我想知道我是否應該使事情變得簡單,因爲它似乎很難搜索它...比我想象的更難 – Angela 2010-07-11 02:24:04

1

首先,has_one關係不會在當前模型中存儲id。它在相對錶中查找外鍵。爲了在聯繫人或事件中存儲status_id,您將使用belongs_to。其次,根據您在狀態中存儲的信息類型,爲什麼它需要成爲自己的獨立表格?爲什麼不在每個你想要使用狀態的模型中創建一個狀態列?這裏有更多的信息可能會有用。

+1

呃......它可能是。似乎我已經看到了ERD的設置,其中某些相當標準化的屬性往往是單獨的表格。正如我上面提到的那樣,狀態值並沒有太大的變化,這似乎是它自己表中的事情,特別是因爲它可以作爲屬性下拉或自動完成。 – Angela 2010-07-10 23:10:58

2

只需在更一般的設置中完成答案,即可推動您的選擇:belongs_to關聯用於具有外鍵的模型中。

+0

這是不正確的。外鍵也可以在has_many上使用,因爲當不能推斷關聯時。 – sabaeus 2017-10-10 20:20:42

相關問題