Ruby on Rails множественные ассоциации между двумя моделями

#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. Можете ли вы опубликовать модель своего отчета? (или сделайте суть, если она слишком большая)