包含模块时出现“未初始化常量”错误

时间:2012-07-17 15:00:45

标签: ruby-on-rails ruby ruby-on-rails-3.1

我正在尝试引用关联扩展名,但它出现错误:

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

这是我的实施:

应用程序/模型/ 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

我正在使用Rails v3.1.3。

1 个答案:

答案 0 :(得分:70)

安德鲁·马歇尔对自动加载设置提出了一个很好的观点(请参阅他链接的问题以获取更多信息),还有:因为您将类命名为ListerExtension,Rails将查找名为{的文件{1}} - lister_extension.rb。这很聪明,但并不那么聪明。

希望有所帮助!