【问题标题】:Rails3 create a global variable throughout application upon initializationRails3 在初始化时在整个应用程序中创建一个全局变量
【发布时间】: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


【解决方案1】:

我找到了一个潜在的解决方案

application.rb 我运行以下代码

    config.after_initialize do
      begin
        config.global_user = User.find(100)
      rescue => e
        Rails.logger.info "Error finding the Global Objects Account"
      end
    end

然后我的应用程序有一个对 Application.config.global_user 的引用,它可以在整个应用程序的任何地方使用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多