Ruby on rails Rails隔离引擎模型关联

Ruby on rails Rails隔离引擎模型关联,ruby-on-rails,ruby-on-rails-3,associations,rails-engines,Ruby On Rails,Ruby On Rails 3,Associations,Rails Engines,我有一个名称空间为“shop”的引擎。一切都很好,只是如果我不在关联声明中添加类名:'Shop::MyAssociatedModel',就会出现错误。 例如,产品有许多产品图片 因此,如果产品型号看起来像这样,一切都正常: module Shop class Product < ActiveRecord::Base has_many :product_images, :class_name => 'Shop::ProductImage' end end 在这一行:

我有一个名称空间为“shop”的引擎。一切都很好,只是如果我不在关联声明中添加类名:'Shop::MyAssociatedModel',就会出现错误。 例如,产品有许多产品图片 因此,如果产品型号看起来像这样,一切都正常:

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

@products.in_groups_of(3) do |products|
  ...
这是我的engine.rb文件:

module Shop
  class Engine < Rails::Engine
    isolate_namespace Shop
    ...
  end
end
模块车间
类引擎

引擎是用rails V3.1.something上的rails生成器创建的,我根据链接中的部分升级到rails 3.2.5,如果不添加名称空间,它将在父应用程序的模型中查找类,这不是您想要的。

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

在公共github repo中是否有此功能?通常情况下,class_name不是字符串,它应该是
Shop::ProductImage
而不是'Shop::ProductImage',并且您需要确保您需要engine.rb文件中的product_image.rb(我认为)抱歉,它是私有的(由于cleint的要求)。类名称应为字符串。您可以在rails文档中看到,product_image.rb是位于app/models/shop/中的一个模型,因此不需要它。谢谢你的评论!嘎。。当我看到这一点时已经太晚了:(你说得对!我的道歉。它也可以是
Shop::ProductImage
to_s
应该隐式调用)您在公共github repo中有这个吗?通常情况下,class_名称不是字符串,它应该是
Shop::ProductImage
而不是'Shop::ProductImage',并且您需要确保您需要engine.rb文件中的product_image.rb(我认为)抱歉,它是私有的(由于cleint的要求).class_name应该是string。您可以在rails文档中看到,product_image.rb是app/models/shop/中的一个模型,因此不需要它。谢谢您的评论!嘎..当我看到这个时已经太晚了:(您是对的!我很抱歉。它也可以是
shop::ProductImage
)(
to_s
应隐式调用)
module Shop
  class Engine < Rails::Engine
    isolate_namespace Shop
    ...
  end
end