2010-05-10 4 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: Укажите имя из join, если значение по умолчанию, основанное на лексическом порядке , не то, что вы хотите. ПРЕДУПРЕЖДЕНИЕ. Если вы переписываете имя таблицы , либо класс, метод 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 –

 Смежные вопросы

  • Нет связанных вопросов^_^