2013-10-07 7 views
1

J'essaie de définir une constante dans un fichier d'initialisation et de l'utiliser dans un modèle.Utilisation de la constante dans le modèle

  • config/initializers/constants.rb

    DEFAULT_EVENT_DURATION = 15 
    
  • app/modèles/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 
    

Cependant, quand il essaie de créer un nouvel événement, il affiche l'erreur suivante dans les journaux:

NameError - uninitialized constant Event::DEFAULT_EVENT_DURATION 

Est-ce que je fais quelque chose de mal?

J'ai fait quelques recherches sur google, mais je n'ai trouvé aucune solution (sauf définir la constante dans le modèle et non dans l'initialiseur ... et ce n'est pas ce que je veux faire).

+0

Avez-vous veillé à redémarrer le serveur? Les initialiseurs ne sont exécutés que lorsque le serveur est chargé pour la première fois. –

+0

Oui, en faisant un simple 'touch tmp/restart.txt' (j'utilise pow). –

+3

Il dit qu'il cherche 'Event :: DEFAULT_EVENT_DURATION', essayez' :: DEFAULT_EVENT_DURATION' pour accéder à la constante à la racine. – rudolph9

Répondre

0

Il s'agissait simplement d'un problème de portée: la constante était dans la portée racine mais elle recherchait la constante dans la portée du contrôleur.

Un simple ':: DEFAULT_EVENT_DURATION' a résolu le problème.

Questions connexes