Ruby on Rails 3 单表继承还是多表继承?

4

我正在开发一个基于Ruby on Rails 3的应用程序。我已经使用Devise和Cancan实现了身份验证和授权。在这个范围内,我已经实现了“成员”对象,它可以拥有至少两种不同的角色 - “用户”和“公司”。从物理上讲,我想将这些角色表示为从Member派生出来的两个派生类,比如User和Company。

我应该使用单表继承还是多表继承?在多表继承的情况下,我应该使用哪个插件?

1个回答

4

我知道这不是你问题的答案,但我认为你应该重新考虑使用继承以外的东西。

继承是一个很好的面向对象机制,但往往被过度使用。大多数情况下,您可以通过关联和某种策略模式来完成比继承更好的工作。

活动记录与这种设计更加兼容,而且更尊重单一职责原则,这意味着更容易进行隔离测试。

如果您想在活动记录模型中使用策略模式,多态关联可能是一种选择(这使您甚至可以拥有有状态的策略)。


谢谢,我计划使用聚合而不是继承,就像用户.公司。我在这里创建了更详细的问题 - http://stackoverflow.com/questions/9369013/devise-cancan-registration-for-users-and-companies - alexanoid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接