【问题标题】:Rails Engine: Extend model with application classRails Engine:使用应用程序类扩展模型
【发布时间】:2010-06-09 09:51:59
【问题描述】:

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

我的文件夹结构:

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

【问题讨论】:

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


    【解决方案1】:

    您可以尝试在您的development.rb 中设置config.cache_classes = true

    【讨论】:

    • 由于 development.rb 与 production.rb 相比唯一相关的区别是这个,我猜是这样......然而,这会导致其他烦恼,但会使代码工作。
    • 这行得通,谢谢。唯一的问题是每次更改后都必须重新启动服务器。
    【解决方案2】:

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

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

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

    【讨论】:

    • 感谢您的回答,tsdbrown,这正是问题所在。我认为我应该在应用程序基础上进行开发,然后将文件交换到引擎。或者每次更改后重新启动我的服务器..
    猜你喜欢
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 2014-01-16
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 2012-02-21
    相关资源
    最近更新 更多