Ruby on rails 3.1 carrierwave-rails 3.1-未定义方法:图像将更改

Ruby on rails 3.1 carrierwave-rails 3.1-未定义方法:图像将更改,ruby-on-rails-3.1,carrierwave,railscasts,Ruby On Rails 3.1,Carrierwave,Railscasts,我得到一个如下所示的错误: undefined method `post_image_will_change!' for #<Post:0xf4e9184> app/controllers/posts_controller.rb:43:in `new' app/controllers/posts_controller.rb:43:in `create' 在_form.html.erb中,我添加了: :html => { :multipart => true } 我

我得到一个如下所示的错误:

undefined method `post_image_will_change!' for #<Post:0xf4e9184>
app/controllers/posts_controller.rb:43:in `new'
app/controllers/posts_controller.rb:43:in `create'
在_form.html.erb中,我添加了:

 :html =>  { :multipart => true }
我看了看,但那帮不了我


关于是什么导致了这种错误,有什么线索吗?我已经迁移了数据库等等(完全按照carrierwave上的railscasts指南进行操作)

他修复了它,但是没有答案集,所以我想我会为将来遇到这个问题的人添加一个答案,包括我自己,直到我弄明白为止:)

未定义的方法'x\u将\u更改!'如果忘记在模型的db表中添加列,则会发生#。如果您有一个模型用户和一个AvatarUploader,并按照Carrierwave文档安装了上传器:

class User < ActiveRecord::Base
  mount_uploader :avatar, AvatarUploader
end
这将生成以下迁移:

class AddAvatarToUsers < ActiveRecord::Migration
  def change
    add_column :users, :avatar, :string
  end
end

我想作者只是忘了跑步:

rake db:migrate
此外,如果在测试中遇到此类错误,则应运行:

rake db:test:prepare

另外,对于在heroku上出现此错误的任何人,您需要运行

heroku run rake db:migrate


从数据库中添加/删除字段/表后,在终端中

Kreek,这显然是一个小疏忽,正如大多数人现在已经意识到的那样,您可能打算在控制台之外运行此命令,否则会得到以下结果:


'NameError:未定义的局部变量或main:Object的'migrate'方法。

我也有类似的问题,但我的问题是因为我正在复制和粘贴代码,忘记了删除

mount_uploader :picture, PictureUploader
我的模型没有使用图片。
希望这有助于以后无法了解发生了什么的其他人

您能否共享您的
帖子\u controller.rb
文件?您是否为图像添加了新的迁移文件?:)我设法把它修好了。。犯了一个极端的新手失误。不管怎样,那是什么错误。我遇到了同样的问题1+忘记在这里添加图像列以及切换分支并在其他分支中重置db,忘记在这个分支中迁移。谢谢!:)拯救了这一天。非常感谢。
rake db:migrate
rake db:test:prepare
heroku run rake db:migrate
heroku restart
mount_uploader :picture, PictureUploader