在模型中使用常量

时间:2013-10-07 16:35:40

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

我试图在初始化程序文件中定义一个常量并将其用于模型中。

  • 配置/初始化/ constants.rb

    DEFAULT_EVENT_DURATION = 15
    
  • 应用程序/模型/ event.rb

    class Event < ActiveRecord::Base
    
      before_validation :set_end_and_allday
    
      [...]
    
      def set_end_and_allday
        self.allDay ||= false
        self.end_event ||= self.start + DEFAULT_EVENT_DURATION.minute
      end
    end
    

但是,当它尝试创建新事件时,它会在日志中显示以下错误:

NameError - uninitialized constant Event::DEFAULT_EVENT_DURATION

我做错了吗?

我在google上进行了一些搜索,但我没有找到任何解决方案(除了在模型中定义常量而不是在初始化程序中...并且这不是我想要的做)。

1 个答案:

答案 0 :(得分:0)

这只是一个范围问题:常量位于根范围内,但它是在控制器范围内搜索常量。

一个简单的':: DEFAULT_EVENT_DURATION'解决了这个问题。