【发布时间】:2013-12-16 18:23:57
【问题描述】:
所以,我有一个这样的 STI 组织:
class Parent
end
class Son < Parent
end
class Daughter < Parent
end
但是每个孩子都有一个与不同模型的 HBTM(has_and_belongs_to_many) 关系。让我们称它为 Chick and Dude,所以它看起来像这样:
class Parent
end
class Son < Parent
has_and_belongs_to_many :chicks
end
class Daughter < Parent
has_and_belongs_to_many :dudes
end
我应该在哪里声明关系?都在父模型?它需要任何额外的选择吗? Rails 会在它自己应该为 null 的情况下将其设为 null 吗?
我一直在寻找这个问题的答案,但找不到它,可能是因为它太笨了。
编辑
正如 Peter Alfvin 所提到的,HBTM 关系必须伴随着一个辅助连接表。这意味着此配置将需要两个连接表。
但是,我没有找到任何关于应该在这个非常具体的示例中使用的命名法的文档。
连接表应该包含数据库表的名称'parents'或模型的名称'daughters'?
引用 STI 的 id 列也会出现同样的问题,应该以数据库表命名还是模型命名?
【问题讨论】:
标签: ruby-on-rails has-and-belongs-to-many sti