我希望有一个Status
模型,在一些用户定义的设置之后会相对静态(不同的用户可能在状态上有不同的值)。
状态可以应用于不同的模型,例如Contact
和Event
。
因此contact.status
返回的状态将与event.status
我想设计应用,以便状态表具有不同的类型(contacts
和events
)。
这是什么样的正确策略和格式?
我想在:has_one Status
模型中声明Contact
,
并在:status_id
表中存储:contacts
。与Event
同上。
:statuses
表将具有状态值,类型和日期。
这有意义吗?你能建议一个更好的方法吗?
答案 0 :(得分:9)
有一个guide on this非常有问题。你的情况略有不同,好像你的状态模型真的需要是多态的,因为不同的东西都是“可以状态化的”。
要回答您的问题,请联系/事件has_one状态对我有意义。
答案 1 :(得分:2)
只是在更一般的设置中完成答案,可以推动您的选择:belongs_to
关联用于具有外键的模型。
答案 2 :(得分:1)
首先,has_one关系不会在当前模型中存储id。它在相对表中查找外键。要在联系人或事件中存储status_id,您需要使用belongs_to。
其次,根据您在Status中存储的信息类型,为什么它需要是自己的单独表?为什么不在每个要使用状态的模型中创建状态列?这里可能会提供更多信息。