我只想拥有一个全局数组,所以当我添加或删除一个元素时, 它可以反射(reflect)在类里面的任何地方。
例如:
class something
@@my_array = Array.new
def self.action_1
@@my_array << 1
@@my_array << 2
@@my_array << 3
end
def self.how_many_elements
puts "# of elements: " + @@my_array.size.to_s
end
end
如果我执行以下操作:
something.action_1 => from controller_a
something.how_many_elements => from controller b
我总是得到以下输出:
"# of elements: 0"
为什么?
最佳答案
一个常见的错误是认为您可以将东西藏在您的类中并且它们会在请求之间持续存在。如果发生这种情况,纯属巧合,是您不能依赖的行为。
以这种方式使用全局变量几乎不是一个好主意。结构合理的 Rails 应用程序应该将数据保存在 session
、数据库或 Rails.cache
子系统中。
在开发模式下,Rails 处理的每个请求都将以几乎干净的状态开始,所有模型、 Controller 、 View 和路由每次都从头开始重新加载。如果您将东西放在类里面并认为下次它会出现在您身边,您将会大吃一惊。
要保存不重要的东西,请使用 Rails 缓存或 session 工具。要保存重要的东西,请使用数据库。
关于ruby-on-rails - 如何在 Ruby on Rails 中处理全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8314407/