У меня есть некоторые проблемы с использованием has_one, through => model
.Лучше всего показать вам мой случай.
class Category
has_many :articles
end
class Article
has_many :comments
belongs_to :category
end
class Comment
belongs_to :article
has_one :category, :through => :articles
end
Все работает отлично.Я могу сделать comment.category
.Проблема в том, что когда я создаю новый комментарий и настраиваю его статью, я сохраняю комментарий, чтобы сделать ассоциацию эффективной.Пример:
>> comment = Comment.new
>> comment.article = Article.last
>> comment.category
-> nil
>> comment.article.category
-> the category
>> comment.save
>> comment.category
-> nil
>> comment.reload
>> comment.category
-> the category
has_one, through => model
В любом случае не устанавливайте, не создавайте конструктор и не создавайте метод.Итак, я хочу заменить модель комментария на:
class Comment
belongs_to :article
def category
article.category
end
end
Звучит неплохо?