Временные метки для связей HABTM с ActiveRecord - программирование
Подтвердить что ты не робот

Временные метки для связей HABTM с ActiveRecord

У меня установлены следующие отношения:

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

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

4b9b3361

Ответ 1

Из руководства направляющих.

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

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

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)