我正在考虑实现逻辑的最佳方法,如下所示:
用户可以根据自己的角色用数量更新属性。
示例:
@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)。
答案 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按钮。
您可以在其中添加此角色条件以查看