Ассоциация моделей Rails — пользователи создают задания, но затем пользователи должны принимать задания и назначаться им

#ruby-on-rails #activerecord #model #associations #one-to-one

#ruby-на-рельсах #activerecord #Модель #ассоциации #один к одному #ruby-on-rails

Вопрос:

Прямо сейчас у меня есть модель, в которой users можно входить в систему и создавать jobs . Задания belongs_to :users и пользователь has_many :jobs . Пока все хорошо. Но теперь я хочу настроить взаимно однозначные отношения, при которых каждому заданию может быть назначен один пользователь. Каков наилучший способ связать модель пользователя и модель заданий?

Примеры:

  1. Пользователь может создавать задания, и ему назначается другой пользователь.
  2. Пользователь может создавать задания и назначать их себе.
  3. Заданиям может быть назначено не более одного пользователя, но наличие назначенного пользователя не обязательно.
  4. У заданий всегда будет создатель (user_id).

Поскольку я уже настроил задания, belongs_to :users уже есть user_id столбец для заданий, так как бы мне повторно использовать это, чтобы теперь показать принятие задания / назначение задания?

Спасибо!

Ответ №1:

Вы можете установить несколько ассоциаций между вашими Job и User классами, используя разные внешние ключи:

 class Job < ActiveRecord::Base
  belongs_to :user
  belongs_to :assigned_user, :class_name => "User", :foreign_key => "assigned_user_id"
end

class User < ActiveRecord::Base
  has_many :jobs
  has_many :assigned_jobs, :class_name => "Job", :foreign_key => "assigned_user_id"
end