web-dev-qa-db-fra.com

Erreur "Constante non initialisée" lors de l'inclusion d'un module

J'essaie de référencer une extension d'association, mais elle génère des erreurs avec:

NameError (uninitialized constant User::ListerExtension):
  app/models/user.rb:2:in `<class:User>'

Voici ma mise en œuvre:

app/models/user.rb

class User < ActiveRecord::Base
  include ListerExtension

  has_and_belongs_to_many :roles, :uniq => true, :extend => Lister

lib/lister.rb

module ListerExtension
  def lister
    self.map(&:to_s).join(', ')
  end
end

J'utilise Rails v3.1.3.

44
Coderama

Andrew Marshall a un excellent point à propos de la configuration du chargement automatique (voir la question qu'il relie pour en savoir plus), mais aussi: parce que vous avez nommé votre classe ListerExtension, Rails will rechercher un fichier nommé lister_extension.rb - paslister.rb. C'est intelligent, mais ce n'est pas si intelligent.

J'espère que ça t'as aidé!

75
Xavier Holt