【发布时间】:2011-02-26 02:39:36
【问题描述】:
好的,我知道这有点像 frankenstack,但我正在运行 JRuby on Rails,而且我对两者都比较陌生。我看到一些我无法理解的行为,我想知道我做错了什么,或者我的堆栈是否有问题。基本问题是我的类属性似乎正在重新初始化,这是我不希望发生的事情。
这基本上是我的代码
class MyController < ActionController::Base
cattr_accessor :an_attr
before_filter :init_an_attr
def init_an_attr
if @@an_attr.nil?
@@an_attr = {}
end
# do some other stuff here
end
end
问题在于,每次调用 init_an_attr 时,if 的条件都为 true,我最终重新分配了 @@an_attr。
这是预期的行为吗?如果是的话,你能解释一下为什么,因为对我来说,分配应该只发生一次。
【问题讨论】:
-
仅供参考,仅当变量的 nil 可以表示为:
@@an_attr ||= {}。
标签: ruby-on-rails ruby ruby-on-rails-3 jruby