我正在开发一个基于Ruby on Rails 3的应用程序。我已经使用Devise和Cancan实现了身份验证和授权。在这个范围内,我已经实现了“成员”对象,它可以拥有至少两种不同的角色 - “用户”和“公司”。从物理上讲,我想将这些角色表示为从Member派生出来的两个派生类,比如User和Company。
我应该使用单表继承还是多表继承?在多表继承的情况下,我应该使用哪个插件?
我正在开发一个基于Ruby on Rails 3的应用程序。我已经使用Devise和Cancan实现了身份验证和授权。在这个范围内,我已经实现了“成员”对象,它可以拥有至少两种不同的角色 - “用户”和“公司”。从物理上讲,我想将这些角色表示为从Member派生出来的两个派生类,比如User和Company。
我应该使用单表继承还是多表继承?在多表继承的情况下,我应该使用哪个插件?
我知道这不是你问题的答案,但我认为你应该重新考虑使用继承以外的东西。
继承是一个很好的面向对象机制,但往往被过度使用。大多数情况下,您可以通过关联和某种策略模式来完成比继承更好的工作。
活动记录与这种设计更加兼容,而且更尊重单一职责原则,这意味着更容易进行隔离测试。
如果您想在活动记录模型中使用策略模式,多态关联可能是一种选择(这使您甚至可以拥有有状态的策略)。