2010-05-10 90 views
1

我試圖模擬一個出版物。的出版物有多個作者和編輯。因爲它是可能的,一個人是一個出版物的作者和其他的編輯,作者和編輯沒有獨立的模型:的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文檔中的警告是關於這一警告,我不明白:

:join_table: 指定的名稱連接表如果基於詞法順序 默認是不是你想要的。警告:如果 您正在覆蓋任一類的表名稱 ,則必須聲明table_name方法 必須在 has_and_belongs_to_many聲明的下面 爲了工作。

回答

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 
1

我通常認爲這是一個你想使用has_many:through的情況。

+0

http://blog.hasmanythrough.com/2006/4/20/many-to-many-dance-off – 2010-05-11 19:08:03