У меня есть модель Job
, которая belongs_to
для трех пользователей (клиент, сотрудник и qa). Для клиента задано значение current_user
при создании задания, но сотрудник и пользователи выбирают свои задания из пула невостребованных заданий.
В настоящее время я реализовал это следующим образом: match 'jobs/:id/assign/:type/:user_id' => 'jobs#assign'
с помощью метода assign
с оператором case в params[:type]
. Так, например, jobs/1/assign/qa/1
назначает пользователя 1 в качестве qa для задания 1.
Это работает, но кажется неаккуратным, и я бы хотел заменить его на что-нибудь более чистое. Существует ли общее соглашение для подобных ситуаций?
Редактировать: Пользователи могут одновременно иметь роли сотрудника и сотрудника. Это то, что заставляет меня чувствовать себя настолько сложным.
class User < ActiveRecord::Base
has_many :submitted_jobs, :class_name => 'Job', :foreign_key => 'customer_id'
has_many :assigned_jobs, :class_name => 'Job', :foreign_key => 'employee_id'
has_many :reviewed_jobs, :class_name => 'Job', :foreign_key => 'qa_id'
class Job < ActiveRecord::Base
belongs_to :customer, :class_name => 'User', :foreign_key => 'customer_id'
belongs_to :employee, :class_name => 'User', :foreign_key => 'employee_id'
belongs_to :qa, :class_name => 'User', :foreign_key => 'qa_id'