【问题标题】:Ruby on Rails 3 single table inheritance or multiple table inheritance?Ruby on Rails 3 单表继承还是多表继承?
【发布时间】:2012-02-20 18:21:04
【问题描述】:

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

我应该使用单表继承还是多表继承。如果是多表继承,我应该使用什么插件?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3


    【解决方案1】:

    我知道这不是您问题的答案,但我认为您应该重新考虑使用继承以外的其他方法。

    继承是一种很好的 OO 机制,但经常被过度使用。大多数情况下,使用关联和某种Strategy Pattern 可以比使用继承做得更好。

    Activerecords 与这种设计比继承更兼容,而且它也更尊重单一职责原则,这意味着它更容易单独测试。

    如果你想在你的 activerecord 模型中使用策略模式,多态关联可能是你要走的路(这甚至可以让你拥有有状态的策略)

    【讨论】:

    猜你喜欢
    • 2015-03-10
    • 2013-06-07
    • 2011-08-29
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    相关资源
    最近更新 更多