2

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

我的文件夹结构:

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 中定义它们,它就可以工作。

4

2 回答 2

1

你可以尝试config.cache_classes = true在你的development.rb

于 2010-06-09T11:05:12.870 回答
1

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

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

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

于 2010-06-09T10:03:09.980 回答