未定义的方法“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的主要内容,如果未能解决你的问题,请参考以下文章