У меня есть 3 модели:
User
has_many :questions
has_many :corrections
end
Question
has_one :correction
belongs_to :user
end
Correction
belongs_to :user
belongs_to :question
Так что, если пользователь Боб задает вопрос, то пользователь Терри может проверить его, и если его неправильно предложить исправление.
Давай останемся с Бобом и предположим,он любезно исправил 5 других пользователей, то есть и предположил, что ему повезло получить 3 исправления от других пользователей.
Я хочу иметь возможность сделать что-то подобное
@bob.corrections_offered=> 5 объектов коррекции @ bob.corrections_received => 3 объекта коррекции
первый из них прост, так как его действительно просто @ bob.corrections под капотом.Но я не знаю, как реализовать последний.Кто-нибудь может помочь?
ОБНОВЛЕНИЕ
Так что я попытался использовать через, как предложено, вот так (О, и на самом деле модель вопроса выше на самом деле называется предложением в моем коде. Т.е. Пользователь=> Sentence => Correction.)
has_many :sentences
has_many :corrections_received, :through => :sentences, :class_name => 'Correction'
, но получил эту ошибку в консоли
ActiveRecord :: HasManyThroughSourceAssociationNotFoundError: Не удалось найти ассоциацию источника (ей): Исправление в моделиПредложение.Попробуйте 'has_many: corrections_received,: through =>: предложения,: источник =>'.Это один из: language,: correction,: user или: checker?
Итак, попробовал следующее
has_many :corrections_received, :through => :sentences, :source => :correction
, но получил
ActiveRecord :: HasManyThroughSourceAssociationMacroError: Недопустимый макрос отражения источника: has_one для has_many: corrections_received,: through =>: предложения.Используйте: source, чтобы указать источник отражения.
не уверен, что происходит не так ...