我应该在轨道上的ruby中使用has_one或belongs_to吗?

时间:2010-07-09 23:05:01

标签: ruby-on-rails belongs-to has-one

我希望有一个Status模型,在一些用户定义的设置之后会相对静态(不同的用户可能在状态上有不同的值)。

状态可以应用于不同的模型,例如ContactEvent

因此contact.status返回的状态将与event.status

不同

我想设计应用,以便状态表具有不同的类型(contactsevents)。

这是什么样的正确策略和格式?

我想在:has_one Status模型中声明Contact, 并在:status_id表中存储:contacts。与Event同上。

:statuses表将具有状态值,类型和日期。

这有意义吗?你能建议一个更好的方法吗?

3 个答案:

答案 0 :(得分:9)

有一个guide on this非常有问题。你的情况略有不同,好像你的状态模型真的需要是多态的,因为不同的东西都是“可以状态化的”。

要回答您的问题,请联系/事件has_one状态对我有意义。

答案 1 :(得分:2)

只是在更一般的设置中完成答案,可以推动您的选择:belongs_to关联用于具有外键的模型。

答案 2 :(得分:1)

首先,has_one关系不会在当前模型中存储id。它在相对表中查找外键。要在联系人或事件中存储status_id,您需要使用belongs_to。

其次,根据您在Status中存储的信息类型,为什么它需要是自己的单独表?为什么不在每个要使用状态的模型中创建状态列?这里可能会提供更多信息。