用户如何模拟另一个模型的belongs_to和Has_many,具体取决于用户是否为Admin?

时间:2015-03-07 23:18:52

标签: ruby-on-rails ruby activerecord associations

我试图创建一些Active Record关联来建模农业农场,到目前为止我已经和用户模型使用和管理布尔字段,这意味着一些用户是管理员而其他用户不是。我也有农场模型。

现在,如果用户if和admin用户拥有农场,但如果用户不是管理员用户则属于农场(员工)。所以基本上我的问题是用户如何根据其管理状态进行belongs_to或has_many?或者是建立这种关系的正确方法,我是否必须为管理员创建不同的模型?

谢谢

1 个答案:

答案 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