我有一个用户模型,其中他们是管理员和经理状态的两个布尔值,每个经理只能创建一个作业,每个作业可以有很多管理员。我为具有其属性的工作制作了一个模型。我需要一种方法来处理经理用户和工作模型之间的关系。我的问题是,我不需要具有管理员或没有经理状态的用户与工作模型建立关系,如何实现?
答案 0 :(得分:1)
你有没有想过Single Table Inheritance?您必须将type column和job_id列添加到users表
class User < ActiveRecord::Base
end
class Manager < User
belongs_to :job
end
class Admin < User
end
class Job < ActiveRecord::Base
has_many :managers
end
答案 1 :(得分:1)
class User
attr_accessible :is_admin, :is_manager, job_id
belongs_to :job
validate :only_manager_belongs_to_job
private
def only_manager_belongs_to_job
if !is_manager && job_id
errors.add(:job_id, "Only a manager can have a job")
end
end
end
class Job
has_many :managers, class_name: "User"
end
STI对此(以及它用于的大多数其他事情)都是过度的。