使用同一型号多次进行 habtm
我正在尝试为出版物建模。一份出版物可以有多个作者和编辑。由于一个人可能是一份出版物的作者和另一份出版物的编辑,因此作者和编辑者没有单独的模型:
class Publication < ActiveRecord::Base
has_and_belongs_to_many :authors, :class_name=>'Person'
has_and_belongs_to_many :editors, :class_name=>'Person'
end
上面的代码不起作用,因为它使用相同的联接表。现在我可以指定连接表的名称,但 API 文档中有一条警告,是关于我不明白的警告:
:连接表: 指定连接表的名称,如果默认基于词法顺序 不是你想要的。警告:如果 你正在覆盖表名 任一类,table_name 方法 必须在任何下面声明 has_and_belongs_to_many 声明于 为了工作。
I am trying to model a publications. A publication can have multiple authors and editors. Since it is possible that one person is an author of one publication and an editor of another, no separate models for Authors and Editors:
class Publication < ActiveRecord::Base
has_and_belongs_to_many :authors, :class_name=>'Person'
has_and_belongs_to_many :editors, :class_name=>'Person'
end
The above code doesn't work, because it uses the same join table. Now I now that I can specify the name of the join table, but there is a warning in the API documentation is a warning about that which I don't understand:
:join_table:
Specify the name of the join table if the default based on lexical order
isn’t what you want. WARNING: If
you’re overwriting the table name of
either class, the table_name method
MUST be declared underneath any
has_and_belongs_to_many declaration in
order to work.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这意味着如果类 Publication 链接到没有标准名称的表,例如“my_publications”:
设置的表名称应放在 habtm 声明后面才能起作用:
It means that if class Publication is linked to a table with no standard name, example "my_publications":
The set table name should be put behind the habtm declaration for this to work:
我通常认为这是您想要使用 has_many :through 的情况。
I'd generally consider this a case where you want to use has_many :through.