#ruby-on-rails #activerecord #model #associations #one-to-one
#ruby-на-рельсах #activerecord #Модель #ассоциации #один к одному #ruby-on-rails
Вопрос:
Прямо сейчас у меня есть модель, в которой users
можно входить в систему и создавать jobs
. Задания belongs_to :users
и пользователь has_many :jobs
. Пока все хорошо. Но теперь я хочу настроить взаимно однозначные отношения, при которых каждому заданию может быть назначен один пользователь. Каков наилучший способ связать модель пользователя и модель заданий?
Примеры:
- Пользователь может создавать задания, и ему назначается другой пользователь.
- Пользователь может создавать задания и назначать их себе.
- Заданиям может быть назначено не более одного пользователя, но наличие назначенного пользователя не обязательно.
- У заданий всегда будет создатель (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