carrierwave – rails 3.1- undefined method: image_will_change

The OP comments that he fixed it, however there’s no answer set so I thought I’d add one for people coming across this in the future, which included myself until I figured it out 🙂

undefined method `x_will_change!’ for # happens if you forget to add a column in your model’s db table. If you have a model User and a AvatarUploader, with the uploader mounted as in the Carrierwave docs:

class User < ActiveRecord::Base
  mount_uploader :avatar, AvatarUploader
end

Then the error will read

undefined method `avatar_will_change!' for #<User:0x00...>

To fix it (based on this example) add a column in a migration run the following in the console:

rails g migration AddAvatarToUsers avatar:string

This will generate the following migration:

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

Then migrate to apply the change (again in the console):

rake db:migrate

Leave a Comment