Ассоциация моделей Rails - пользователи создают рабочие места, но затем пользователи должны принимать рабочие места и назначаться им - PullRequest
0 голосов
/ 06 мая 2011

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

Примеры:

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

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

Спасибо!

1 Ответ

1 голос
/ 06 мая 2011

Вы можете установить несколько ассоциаций между классами 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
...