Управление множественным объединением двух классов в rails

#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"