Rails模型设计:将一组属性从一个类复制到另一个类

时间:2011-10-20 03:17:51

标签: ruby-on-rails class model

我有一个Invite模型,它有n + m个属性(位置,时间等)。当接受邀请时,将创建一个Event对象,其中包含从Invite模型复制的n个属性及其自身的k个属性。我想避免重复n个属性。

我应该如何在Rails中建模这种关系?

谢谢。

1 个答案:

答案 0 :(得分:1)

不要考虑属性,考虑对象以及它们在现实世界中的模型(代表)。还要考虑对象的生命周期

  • 邀请是易于理解的
  • 活动也是可以理解的

仅仅因为存在重叠并不意味着您想要消除它。

如果你真的想要,你可以说每个事件belongs_to都是邀请。 (并且n属性仅存储在拥有的Invite模型中。)

但在您执行此操作之前,请确保业务逻辑确保Invites在达到accepted状态后永远不会更改。

已添加复制n属性的另一个原因:假设稍后为实际事件更改了这些属性 - 您希望属性位于事件模型中。如果您有一组Invite和Event的数据,那么您可以说这些属性是从Invite输入时开始修复的。

但这可能与现实世界不符。如果您确实更改了值,那么在输入邀请时,您将丢失最初值的信息。