2016-04-28 77 views
2

我一直在开发一个rails应用程序,我们允许不同的用户为模型的属性提交不同的值。涉及current_user的Rails自定义验证

例如,所有用户都可以提交大于10的值,同时允许管理员提交一位数值。

由于我们现在的模型没有权限访问current_user帮助程序,因此您无法轻松编写自定义验证程序。

实施此功能的最佳实践是什么?

回答

1

总是建议在模型之外保留像current_user这样的逻辑。 但是根据您的要求,

那么,因为我们的控制器知道current_user那么它应该是控制器告诉您的模型。

所以在模型中添加attr_accessorcurrent_user 并在控制器做类似

@model_obj.current_user = current_user

现在,这一切都这样说。我会建议使用替代模型验证。因为实际上你要做的是根据用户的角色授予用户权限。你最好使用像Pundit这样的宝石。

1

这可能是您在控制器中执行验证的情况。严格地说,这不是关于模型验证,而是关于用户授权。 Pundit是一个很好的授权宝石,或者你可以推出自己的。