我试图创建一些Active Record关联来建模农业农场,到目前为止我已经和用户模型使用和管理布尔字段,这意味着一些用户是管理员而其他用户不是。我也有农场模型。
现在,如果用户if和admin用户拥有农场,但如果用户不是管理员用户则属于农场(员工)。所以基本上我的问题是用户如何根据其管理状态进行belongs_to或has_many?或者是建立这种关系的正确方法,我是否必须为管理员创建不同的模型?
谢谢
答案 0 :(得分:0)
听起来我的模特实际上有两种不同的联想。定义所有权的定义和定义用户工作位置的定义:
belongs_to :farm_employed_at, class_name: "Farm"
has_many :owned_farms, class_name: "Farm"
然后,您可以添加验证以确保仅设置正确的关联类型:
validates :farm_association
private
def farm_assosiation
if admin?
errors.add(:base, "Admins should not work") if farm_employed_at
else
errors.add(:base, "Users aren't allowed to own farms") if owned_farms.any?
end
end