繁体   English   中英

在模型观察器Ruby on Rails中访问current_user

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM