несколько раз с одной и той же моделью - PullRequest
1 голос
/ 10 мая 2010

Я пытаюсь смоделировать публикации.Публикация может иметь несколько авторов и редакторов.Поскольку возможно, что один человек является автором одной публикации и редактором другой, для авторов и редакторов нет отдельных моделей:

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, чтобы работать.

Ответы [ 2 ]

1 голос
/ 10 мая 2010

Это означает, что если класс 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
1 голос
/ 10 мая 2010

Я бы вообще рассмотрел это как случай, когда вы хотите использовать has_many: through.

...