1

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

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

上面的代码不起作用,因为它使用了相同的连接表。现在我可以指定连接表的名称,但是 API 文档中有一个警告是关于我不理解的警告:

:join_table: 如果基于词法顺序的默认值不是您想要的,则指定连接表的名称。警告:如果您要覆盖任一类的表名,则必须在任何 has_and_belongs_to_many 声明下声明 table_name 方法才能正常工作。

4

2 回答 2

1

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

于 2010-05-10T16:37:19.717 回答
1

这意味着如果类 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
于 2010-05-10T16:40:39.777 回答