RoR更新字段-基于用户角色的金额限制?

时间:2018-07-26 03:32:44

标签: ruby-on-rails ruby validation ruby-on-rails-5

我正在考虑实现逻辑的最佳方法,如下所示:

用户可以根据自己的角色用数量更新属性。

示例:

@some_user = User.first.points => 10

if current_user.admin?最多可以为@some_user添加+100分。

if current_user.cs_staff?最多可以加50点。

if current_user.junior_cs_staff?最多可以加10点。

您将如何验证它?自定义模型验证还是在Pundit策略中更好地指定? (我正在使用Pundit)。

1 个答案:

答案 0 :(得分:3)

您可以在模型中添加自定义验证方法,如下所示

validate :validate_user

def validate_user
  if current_user.junior_cs_staff? && points > 10
    errors.add(:points, "You can't add more then 10 points")
  elsif current_user.cs_staff? && points > 50
    errors.add(:points, "You can't add more then 50 points")
  elsif current_user.admin? && points > 100
    errors.add(:points, "You can't add more then 100 points")
  end
end

但是我的建议是,在junior_cs_staff登录时只显示+10按钮,在登录cs_staf时仅显示+50点按钮,而在管理员登录时仅显示+100按钮。

您可以在其中添加此角色条件以查看