Ответ 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)