Rails引擎:使用应用程序类扩展模型

时间:2010-06-09 09:51:59

标签: ruby-on-rails ruby ruby-on-rails-plugins rails-engines

我在供应商/插件中有一个引擎。我的问题是,我似乎无法使用基础应用程序中的模型扩展引擎模型。

我的文件夹结构:

APPNAME
 -app
  -models
   -item.rb
 -vendor
  -plugins
   -image_gallery
    -app
     -models
      -image_gallery.rb

没有什么特别的...在我的image_gallery.rb中我只有这个:

class ImageGallery < Item
end

但是Rails抱怨缺少item.rb中定义的方法。如果我在image_gallery.rb中定义它们,它就可以工作。

2 个答案:

答案 0 :(得分:1)

我认为这是一个加载顺序问题。供应商目录不会在开发模式下重新加载。当引擎模型尝试从中继承时,应用程序中的模型尚未加载。

抱歉,我不知道对此有什么修复,也从未找到过。我认为rails 3将解决这个问题。我们通常只是将相关模型保留在同一个引擎中,或者将引擎内容移动到主应用程序中以避免它。这很糟糕,我很想知道正确的解决方案。

尝试生产模式,你不应该有问题。如果是这种情况,你可以看一下使用霰弹枪。

答案 1 :(得分:1)

您可以尝试在config.cache_classes = true

中设置development.rb