![](/img/trans.png)
[英]Rails: Access to current_user from within a model in Ruby on Rails
[英]Access current_user in model observer Ruby on Rails
情况:我想在保存文档之前立即验证一些用户权限,因此我想到的显而易见的解决方案是制作一个DocumentObserver并修改before_save方法进行检查。 但是,这样做的问题是模型无法(也不应该)访问current_user,这对于执行检查是必要的。 我知道可以通过使用Thread来解决此问题,但我宁愿遵循标准做法。 有没有办法做到这一点,或者有更好的方法来达到相同的结果? 观察者似乎是一个如此直观和简单的解决方案,如果不使用它,这将是一个耻辱。
注意事项:我的问题与 此 类似 ,但我希望得到更具体的答案或建议。 供参考, 这是current_user解决方法
修订:更加复杂-控制器位于我无法修改的第三方gem中,这意味着我不能简单地将current_user传递给模型。 这种复杂性可能迫使我修补一些第三方的方法或某些东西,除非有其他聪明的方法可以使它起作用。
该模型是提供API。 您不需要访问模型中的辅助方法,这也是非常不好的做法。
解决您的问题很简单。 只需提供一个用户实例作为方法参数即可。
# model
def my_model_method(user)
# then use this user
end
# controller/view
@int.my_model_method(current_user)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.