【问题标题】:How can I use current_user and cookies in a class thats written in a controller's concern module?如何在控制器的关注模块中编写的类中使用 current_user 和 cookie?
【发布时间】:2020-12-02 04:15:03
【问题描述】:
module DummyModule
  extend ActiveSupport::Concern
  included do
    class DummyClass
      #I would like to use current_user and cookies here without initialising the class with any arguments!
    end
  end
end

我知道可以通过使用 DummyClass.new(current_user, cookies) 类之外的参数来初始化这个类,但是还有其他更漂亮的方法吗?

【问题讨论】:

  • 您可以使用Thread.current,但这有一些您可能不想引入的风险。 ActiveSupport::CurrentAttributes 出现在 Rails 5 中,它通过整洁的抽象解决了这个问题,但您使用的是 Rails 4。

标签: ruby ruby-on-rails-4 devise


【解决方案1】:

没有什么神奇的方法可以做到这一点。

sessioncurrent_user 是仅在控制器上下文中可用的方法。当您想在模型中使用它们时,您必须将它们传递给模型。

或者您必须将它们分配给模型上下文中可用的东西。 Thread.currentCurrentAttributes 可能是一种选择——正如 Josh 已经指出的那样。但请记住,这两种方式也都有缺点。

最清晰和最安全的方法是在其initialize 方法中将它们传递给模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多