2011-03-30 51 views
59

我有一个装载Carrierwave上传器的简单模型。一切工作正常,但我得到一个未定义的方法“image_will_change!” Heroku上的错误。未定义的方法`image_will_change!'对于Heroku上的CarrierWave

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 
+0

我遇到了同样的错误消息,即使我做了rake db:migrate,错误仍然没有消失。所以我最终升级到新的Cedar堆栈,并且它工作。我怀疑,如果我放弃数据库,并重做整个迁移,它也会起作用。 – sivabudh 2011-08-21 04:25:07

回答

139

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

+3

工作正常!我忘了修改迁移以包含此字符串。 – 2011-03-30 20:42:59

+5

而且,如果在运行rspec测试时遇到类似这样的错误,则可能忘记运行rake db:test:prepare'''。 – 2013-08-04 21:56:38

8

这可能是因为你忘了运行:

rake db:migrate 
18

即使运行在Heroku迁移后,错误依然存在。

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

heroku restart 
+1

只是想让你知道你救了我的命。在我发现这件事之前,我已经接近从我的办公室窗户跳下来了。 – vlasits 2013-06-10 18:09:55

+0

这个答案也应该标记为正确的。 – 2014-04-04 08:41:16

+0

哇!在30分钟的搜索后找到这个!为我工作! – newbie 2014-11-20 01:09:49

相关问题