加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何在中间件中设置一个可在我的所有应用程序

发布时间:2020-12-17 04:27:02 所属栏目:百科 来源:网络整理
导读:我正在使用 Ruby on Rails 3,我正在尝试使用中间件来设置变量@variable_name以后可以在控制器中访问. 例如,我的中间件是 class Auth def initialize(app) @app = app end def call(env) @account ||= Account.find(1) @app.call(env) end end 上面的代码正确
我正在使用 Ruby on Rails 3,我正在尝试使用中间件来设置变量@variable_name以后可以在控制器中访问.

例如,我的中间件是

class Auth

    def initialize(app)
      @app = app
    end

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

      @app.call(env)
    end
  end

上面的代码正确设置了@account变量,但在我的应用程序中没有(在控制器,模型,视图……中).那么,我该怎么做呢?

我看到this answer这是一种做我需要的方法,但我希望@account变量“可以直接访问”.也就是说,不使用这种方式,但在可见的情况下,例如在我的视图中,如下所示:

<%= debug @account %>

解决方法

您可以使用’env’.所以在你的中间件中你这样做:
def call(env)
  env['account'] = Account.find(1)
  @app.call(env)
end

您可以在应用中使用“请求”获取值:

request.env['account']

请不要使用全局变量或类属性,因为有些人在这里建议.这是让自己陷入麻烦的可靠方法,而且确实是一种坏习惯.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读