我正在使用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 %>
我不認爲這可以在中間件中完成。你在'ApplicationController'中用'before_filter:set_my_var'試了一下嗎? – Wukerplank 2011-03-04 10:05:39
@Wukerplank我需要在中間件。 – user502052 2011-03-04 10:06:36
你可以嘗試一些骯髒和可能有害的東西,比如將它存儲在'Thread.current [:my_var] = Account.find(1)'中。 – Wukerplank 2011-03-04 10:16:13