未定义的方法“image_will_change!”用于 Heroku 上的 CarrierWave

Posted

技术标签:

【中文标题】未定义的方法“image_will_change!”用于 Heroku 上的 CarrierWave【英文标题】:Undefined method `image_will_change!' for CarrierWave on Heroku 【发布时间】:2011-07-25 18:39:56 【问题描述】:

我有一个安装 Carrierwave 上传器的简单模型。在开发中一切正常,但我得到一个未定义的方法“image_will_change!” Heroku 上的错误。

class Receipt < ActiveRecord::Base
  mount_uploader :image, ImageUploader
end

class ImageUploader < CarrierWave::Uploader::Base
  storage :fog
  def store_dir
    "receipts/saved"
  end
end

我也根据 Carrierwave Wiki 适当地设置了 cache_dir。

receipt.image = File.open "public/images/test.jpg" #works fine in development, fails in heroku

【问题讨论】:

我遇到了同样的错误消息,即使我做了 rake db:migrate,错误仍然没有消失。所以我最终升级到了新的 Cedar 堆栈,并且它起作用了。我怀疑如果我删除数据库并重做整个迁移,它也会起作用。 【参考方案1】:

很可能您在 heroku 上的数据库在收据表中没有图像列。

【讨论】:

成功了!我忘了我修改了迁移以包含此字符串。 而且,如果您在运行 rspec 测试时遇到这样的错误,您可能忘记运行 rake db:test:prepare【参考方案2】:

即使在 heroku 上运行迁移后,错误仍然存​​在。

我发现需要一个 heroku 重启命令才能永远消除错误。

heroku restart

【讨论】:

只是想让你知道你救了我的命。在我发现这个之前,我这个沮丧地差点从我的办公室窗户跳下来。 哇!经过30分钟的搜索找到了这个!为我工作!【参考方案3】:

可能是你忘记跑了:

rake db:migrate

【讨论】:

以上是关于未定义的方法“image_will_change!”用于 Heroku 上的 CarrierWave的主要内容,如果未能解决你的问题,请参考以下文章

如何像未定义的函数一样传递未定义的方法

jni报错日志打印方法未定义

Laravel 调用未定义的方法。方法存在

对结构方法的未定义引用[重复]

服务中的方法在执行时未定义,但在登录到控制台时未定义

未定义的方法和未初始化的常量错误