2013-10-07 2 views
1

Я пытаюсь определить константу в файле инициализации и использовать ее в модели.Использование константы в модели

  • конфигурации/Инициализаторы/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, но я не нашел решения (кроме определения константы в модели, а не в инициализаторе ... и это не то, что я хочу сделать).

+0

Вы не забыли перезапустить сервер? Инициализаторы запускаются только при первом загрузке сервера –

+0

Да, выполнив простой 'touch tmp/restart.txt' (я использую pow). –

+3

В нем говорится, что он ищет 'Event :: DEFAULT_EVENT_DURATION', попробуйте' :: DEFAULT_EVENT_DURATION' для доступа к константе в корне. – rudolph9

ответ

0

Это была проблема с областью видимости: константа была в области корня, но она искала константу в области контроллера.

Простая ':: DEFAULT_EVENT_DURATION' решила проблему.

Смежные вопросы