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