3

我刚刚开始研究在 Rails 中使用更高级的模型。我经常使用的一个非常成功的模型是一个类访问多对多交叉引用关系的模型,该类本身是多对多关系中基类的子类。

这样,交叉引用类可以充当基类的替代品。

一个很好的例子是导航层次结构节点 (NavigationNode) 与用户角色交叉引用。在交叉引用点,一个类 (RoleNavigationNode) 可以从 NavigationNode 继承,并且仍然对用户角色有深入的了解。

我的问题是(在上述情况下)RoleNavigationNode 是否可以从 NavigationNode 继承,但可以访问交叉引用表,而不是 NavigationNode 访问的表——这当然是使用 ActiveRecord。

我没有研究多态关联,这可能更合适。

提前致谢...,

4

2 回答 2

2

这适用于 Rails 3:

class Common < ActiveRecord::Base
  @abstract_class = true
  def common
    "Foobar!"
  end
end

class Model < Common
end

class AnotherModel < Common
end

如果没有设置,Rails 将在您的数据库中abstract_class查找一个名为的表。commons

于 2012-02-29T22:05:34.347 回答
2

尝试set_table_name过子类?

另外,请查看@abstract_class模型类中的设置。

最后,您需要的可能只是一个包含在两个模型中的 Mixin。

无论如何,你正在尝试做的事情听起来相当非 ActiveRecord-ish。您可能想发布一个更清晰的示例来说明您要实现的目标,也许我们可以想出一些更简单的东西。

于 2009-05-01T13:58:52.373 回答