2010-07-09 81 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

相关问题