ActiveRecord选择了错误的class_name

时间:2010-08-24 09:40:54

标签: ruby-on-rails associations has-many

干草开发者,

当我调用 @ chapter.articles 时,rails会产生以下错误:

uninitialized constant Sommaire::Chapter::Article

如果我指定:class_name => “Sommaire ::文章”, 它产生:

uninitialized constant Sommaire::Chapter::Sommaire::Article

由于我对rails(3.0.0)相对较新,这让我失望了!

提前感谢您的帮助。 JD

在类的代码下面 在 sommaire.rb

class Sommaire < ActiveRecord::Base
  has_many :chapters
end

sommaire / chapter.rb

class Sommaire::Chapter < ActiveRecord::Base
  include ItemBase

  def self.table_name
    'sommaire_chapters'
  end

  belongs_to :sommaire
  has_many :articles, :class_name => "Sommaire::Article"
  validates_presence_of :title, :description

end
sommaire / article.rb

中的

class Sommaire::Article < ActiveRecord::Base

  include ItemBase

  def self.table_name
    'sommaire_articles'
  end

  belongs_to :chapter

end

1 个答案:

答案 0 :(得分:3)

值得尝试class_name => '::Sommaire::Article'(注意前面的::)来表明Sommaire路径来自根命名空间。

虽然在Sommaire命名空间和Sommaire模型之间存在一些冲突,但在这种情况下您可能想要重命名其中一个。