Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"Uninitialized constant" error when including a module

I am trying to reference an association extension but it errors with:

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

Here is my implementation:

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 

I am using Rails v3.1.3.

like image 789
Coderama Avatar asked Jul 17 '12 15:07

Coderama


1 Answers

Andrew Marshall has an excellent point about the auto-load setup (see the question he links for more on that), but also: Because you named your class ListerExtension, Rails will be looking for a file named lister_extension.rb - not lister.rb. It's smart, but it's not that smart.

Hope that helps!

like image 191
Xavier Holt Avatar answered Sep 30 '22 17:09

Xavier Holt