2

我有一个带有命名空间“商店”的引擎。一切都很好,除了如果我不在关联声明中添加 class_name: 'Shop::MyAssociatedModel' 会出错。例如,产品有很多 product_images,所以如果产品模型看起来像这样,一切都很好:

module Shop
  class Product < ActiveRecord::Base
    has_many :product_images, :class_name => 'Shop::ProductImage'
  end
end

如果我不使用 class_name 我会收到一个错误:

uninitialized constant ProductImage 

在这条线上:

@products.in_groups_of(3) do |products|
  ...

这是我的 engine.rb 文件:

module Shop
  class Engine < Rails::Engine
    isolate_namespace Shop
    ...
  end
end

该引擎是使用 rails v 3.1.something 上的 rails generator 创建的,我升级到 rails 3.2.5

4

1 回答 1

0

根据链接中的Rails Guides - Engines部分,如果您不添加命名空间,它将在父应用程序的模型中查找该类,这不是您想要的。

于 2012-06-10T11:38:44.170 回答