Отметки времени для отношений HABTM с ActiveRecord - PullRequest
16 голосов
/ 25 января 2012

У меня есть следующие настройки отношений:

class Article < ActiveRecord::Base
  has_and_belongs_to_many :authors
end

class Author < ActiveRecord::Base
  has_and_belongs_to_many :articles
end

Я заметил, что, хотя таблица объединения articles_authors имеет временные метки, они не заполняются при создании новых отношений.Например:

Author.first.articles << Article.first

Важно, чтобы я отслеживал, когда автор связан со статьей.Есть ли способ, которым я могу это сделать?

1 Ответ

14 голосов
/ 25 января 2012

Из направляющих .

Самое простое практическое правило заключается в том, что вы должны установить отношения has_many: through, если вам нужно работать с моделью отношений как с независимой сущностью. Если вам не нужно ничего делать с моделью отношений, может быть проще установить отношение has_and_belongs_to_many (хотя вам нужно помнить о создании объединяющей таблицы в базе данных).

Вам следует использовать has_many: through, если вам нужны проверки, обратные вызовы или дополнительные атрибуты в модели соединения.

class Article < ActiveRecord::Base
  has_many :article_authors
  has_many :authors, :through => :article_authors
end

class Author < ActiveRecord::Base
  has_many :article_authors
  has_many :articles, :through => :article_authors
end

class ArticleAuthor < ActiveRecord::Base
  belongs_to :article
  belongs_to :author
end

Если он все еще не работает с этой структурой, тогда вместо использования массива push используйте create.

Author.first.article_authors.create(:article => Article.first)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...