0

情况:我想在保存文档之前立即验证一些用户权限,所以我想出的明显解决方案是制作一个 DocumentObserver 并修改 before_save 方法来进行检查。然而,这样做的问题是模型不能轻易(也不应该)访问 current_user,这是执行检查所必需的。我知道可以通过使用 Thread 来解决这个问题,但如果可能的话,我宁愿遵循标准做法。有没有办法做到这一点,或者有更好的方法来达到同样的结果?观察者似乎是一个如此直观和简单的解决方案,不使用它会很可惜。

注意事项:我的问题与类似,但我希望得到更具体的答案或建议。作为参考,是 current_user 解决方法

修订:更复杂 - 控制器位于我无法修改的第三方 gem 中,这意味着我不能简单地将 current_user 传递给模型。这种复杂性可能会迫使我修补一些第三方的方法或其他东西,除非有其他一些聪明的方法可以让它工作......

4

1 回答 1

0

该模型是提供API。您不需要在模型中访问辅助方法,这也是一种非常糟糕的做法。

解决您的问题很简单。只需提供一个用户实例作为方法参数。

# model
def my_model_method(user)
  # then use this user
end

# controller/view
@int.my_model_method(current_user)
于 2013-07-08T19:20:01.707 回答