使用同一型号多次进行 habtm

发布于 2024-08-31 19:45:57 字数 503 浏览 4 评论 0原文

我正在尝试为出版物建模。一份出版物可以有多个作者和编辑。由于一个人可能是一份出版物的作者和另一份出版物的编辑,因此作者和编辑者没有单独的模型:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你的心境我的脸 2024-09-07 19:45:57

这意味着如果类 Publication 链接到没有标准名称的表,例如“my_publications”:

class Publication < ActiveRecord::Base
  set_table_name "my_publication"
end 

设置的表名称应放在 habtm 声明后面才能起作用:

class Publication < ActiveRecord::Base
  has_and_belongs_to_many :authors, :class_name=>'Person'
  has_and_belongs_to_many :editors, :class_name=>'Person'
  set_table_name "my_publication"
end

It means that if class Publication is linked to a table with no standard name, example "my_publications":

class Publication < ActiveRecord::Base
  set_table_name "my_publication"
end 

The set table name should be put behind the habtm declaration for this to work:

class Publication < ActiveRecord::Base
  has_and_belongs_to_many :authors, :class_name=>'Person'
  has_and_belongs_to_many :editors, :class_name=>'Person'
  set_table_name "my_publication"
end
べ繥欢鉨o。 2024-09-07 19:45:57

我通常认为这是您想要使用 has_many :through 的情况。

I'd generally consider this a case where you want to use has_many :through.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文