Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

carrierwave - rails 3.1- undefined method: image_will_change

I get an error that look like this:

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' 

I've included this in my "post" model:

 attr_accessible :title, :name, :content, :post_image  mount_uploader :post_image, PostImageUploader 

and in _form.html.erb I've added:

 :html =>  { :multipart => true } 

I looked CarrierWave Error but that doesn't help me.

Any clues of what generates that error? I've migrated the database and so forth (followed the railscasts guide on carrierwave exactly..)

like image 821
buren Avatar asked Sep 20 '11 20:09

buren


1 Answers

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 
like image 139
kreek Avatar answered Sep 19 '22 08:09

kreek