gpt4 book ai didi

ruby-on-rails - 如何在中间件中设置一个可在我的所有应用程序中访问的变量?

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:14 25 4
gpt4 key购买 nike

我正在使用 Ruby on Rails 3,我正在尝试使用中间件来设置一个变量 @variable_name,以便稍后在 Controller 中访问。

比如我的中间件是

  class Auth

def initialize(app)
@app = app
end

def call(env)
@account ||= Account.find(1)

@app.call(env)
end
end

上面的代码正确设置了 @account 变量,但在我的应用程序中(在 Controller 、模型、 View 等中)不可用。那么,我怎样才能做到这一点?


我看到了this answer这是一种做我需要的方法,但我希望 @account 变量“可直接访问”。也就是说,不使用那种方式但使它可用,例如在我看来,像这样:

<%= debug @account %>

最佳答案

您可以为此使用“env”。所以在你的中间件中你这样做:

def call(env)
env['account'] = Account.find(1)
@app.call(env)
end

您可以通过在您的应用中使用“请求”来获取该值:

request.env['account']

请不要像某些人在这里建议的那样使用全局变量或类属性。这肯定会让自己陷入麻烦,而且确实是一个坏习惯。

关于ruby-on-rails - 如何在中间件中设置一个可在我的所有应用程序中访问的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5192175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com