我的应用程序中有一个全局可用的变量(所以我在applicationController中设置了@account)。
但是,我需要一个插件才能访问同一个变量。
注意:此变量在每个请求中都是不同的。
创建此架构的最佳方法是什么?
答案 0 :(得分:0)
在app控制器中设置@account并不能使整个应用程序全局可用 - 例如,模型无法访问它。控制器中设置的任何实例var仅在控制器或视图中可用。如果插件具有控制器和视图代码,那么只要在插件控制器代码运行之前设置变量,此代码就应该能够以正常方式访问变量。
如果您提供有关您想要做的事情的更多详细信息(即您想要访问@account的地点/方式),那么有人可能会建议一个好方法。
答案 1 :(得分:0)
也许这样的事情会起作用:
class Account
def self.current
@current
# or: Thread.current[:current_account]
end
def self.current=(a)
@current = a
# or: Thread.current[:current_account] = a # ..if you want to be thread-safe.
end
...
end
# your controller's before_filter:
def assign_account
...
Account.current = @account # But remember to set nil if none found!
end
# Any code in your app (view, model, almost anything):
<%= Account.current.name if Account.current %>