我有一个类变量,我想从initilizer设置并从那时起保持值。以下示例仅适用于第一页加载。有更好的方法吗?
应用程序/模型/ token.rb
class Token
class << self
attr_accessor :salt
end
end
配置/ initilizers / token.rb
Token.salt = "savory hash"
答案 0 :(得分:4)
在开发模式下,您的类将重新加载每个请求,因此在第一个请求之后重新加载类时,在启动时初始化程序中设置的值将不会保留。 (development.rb中“ config.cache_classes = false ”的结果)。
但是,如果要在初始化程序中设置一个值并使其在开发模式中保持不变,则可以将其添加为常量:
initializers.rb
SALT='savory_hash'
OR作为应用程序配置变量:
application.rb中
module YourAppsName
class Application < Rails::Application
config.token_salt = "savory_hash"
end
end
可以在应用中的任何位置访问:
Rails.application.config.token_salt
当然,如果在您的环境中启用类缓存,您应该会发现变量的值将持续存在而不执行上述任何操作。
答案 1 :(得分:0)
您可以尝试将它们存储在会话变量,缓存中,甚至存储在自己的表(参考表)中。