#ruby-on-rails #associations
#ruby-on-rails #ассоциации
Вопрос:
Вот моя проблема:
У меня есть пользователь модели. Пользователь может быть администратором. Пользователь может отправить отчет об ошибке в пул отчетов, и этот отчет может быть назначен администратору
Как бы вы связали эти две модели (пользователь / отчет), зная, что администратор является пользователем?
Мне бы нужны report.sender и report.admin, но я не могу найти, как это сделать.
Спасибо!
Ответ №1:
Вы можете определить отношения следующим образом:
class Report < ActiveRecord::Base
belongs_to :reporter, foreign_key: reporter_id, class_name: 'User'
belongs_to :admin, foreign_key: admin_id, class_name: 'User'
И используйте их так:
report.admin # => returns a User object
report.reporter # => also returns a User object
Комментарии:
1. Спасибо, это очень помогает, но я не могу повлиять на администратора вы знаете, как я мог бы это сделать?
report.admin = user NameError: uninitialized constant Report::user
2. Является
user
ли переменная экземпляром пользовательской модели?3. да, это так. Я могу создать отчет, выполнив
@report = @user.reports.new
, но не могу назначить его с помощью:@report.admin = @another_user
или@report.reporter = @ya_user
4. Можете ли вы опубликовать модель своего отчета? (или сделайте суть, если она слишком большая)