【发布时间】:2019-10-29 09:44:05
【问题描述】:
目前我们在application_controller.rb 中有一个方法,它初始化一个全局变量,如果它已经初始化则返回它的值。
问题是在每次请求时都会调用它,这是多余的,因为变量是在第一次请求后初始化的。
如何将此方法移动到 application.rb 并让它在 Rails 初始化时运行一次
config.after_initialize do
begin
@global_user = User.find(100)
rescue => e
Rails.logger.info "Error finding the Global User"
end
end
【问题讨论】:
-
那是一个实例变量——不是一个全局变量。 Ruby 中的全局变量使用符号
$,例如。$global_user。我也不认为这实际上是一个好主意。如果您想避免数据库查询,请改用缓存。 guides.rubyonrails.org/caching_with_rails.html -
@max 感谢您的意见。你能看看我下面提出的解决方案吗?这样的解决方案有什么缺点?
标签: ruby-on-rails ruby-on-rails-3