habtm多次使用相同的型号

时间:2010-05-10 16:32:57

标签: ruby-on-rails has-and-belongs-to-many

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

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:   如果默认基于词法顺序,请指定连接表的名称   不是你想要的。警告:如果   你正在覆盖表的名字   无论是class,table_name方法   必须在任何下面声明   has_and_belongs_to_many声明   为了工作。

2 个答案:

答案 0 :(得分:1)

我通常认为这是你想要使用has_many:through。

的情况

答案 1 :(得分:1)

这意味着如果将类发布链接到没有标准名称的表,例如“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
相关问题