Rails:初始化程序中的常量

时间:2014-09-03 09:53:46

标签: ruby-on-rails ruby-on-rails-4

我想在初始化程序中保留常量并在模型中使用它:

模型:

class AssessmentProcedure < ActiveRecord::Base

  def default_values
    self.self_estimation_weight ||= PROCEDURES_CONFIG['self_estimation_weight']
    self.parent_estimation_weight ||= PROCEDURES_CONFIG['parent_estimation_weight']
  end

end

配置/初始化/ constants.rb

PROCEDURES_CONFIG = YAML.load_file("#{::Rails.root}/config/assessment_procedures.yml")

问题是当我使用它时,我得到一个例外:

NameError: uninitialized constant AssessmentProcedure::PROCEDURES_CONFIG

我错过了什么?感谢

1 个答案:

答案 0 :(得分:1)

尝试

self.self_estimation_weight ||= ::PROCEDURES_CONFIG['self_estimation_weight']

它将取消常量并使用全局命名空间

在Rail 4.2中有一种更清洁的方式

# config/environments/production.rb
config.x.procedures_config.self_estimation_weight = 4711

有关自定义配置选项的信息,请参阅http://edgeguides.rubyonrails.org/4_2_release_notes.html