#ruby-on-rails #associations
#ruby-on-rails #ассоциации
Вопрос:
Я хочу управлять ассоциацией типа «один ко многим» для пользователя и ответов и ассоциацией типа «многие ко многим» для управления голосованием для одних и тех же двух моделей, т.е. Пользователей и ответов.
Итак, как поддерживать обе ассоциации одновременно?
Этот код — это то, что я хочу реализовать.
class User < ActiveRecord::Base
has_many :answers #For the answers of particular user
has_and_belongs_to_many :answers #For the answers upvoted by a particular user
end
class Answer < ActiveRecord::Base
belongs_to :user #Author of the answer
has_and_belongs_to_many :users #For those who upvoted the answer
end
Комментарии:
1. Непонятно, о чем вы спрашиваете.
2. @DaveNewton На самом деле, когда пользователь «u» проголосует, я хочу добавить этот ответ в u.ответы (что он проголосовал не за ответ, написанный им), но пользователь u.ответы не могут использоваться для обеих ассоциаций: (
3. Тогда вам нужны две ассоциации, а не только одна. Ознакомьтесь с опциями в руководстве AR.
Ответ №1:
Вы должны дать другое имя другой ассоциации, но тогда вам также нужно будет указать имя класса.
has_many :answers
has_and_belongs_to_many :voted_answers, class_name: "Answer"