Несущая - рельсы 3.1- undefined метод: image_will_change
Я получаю сообщение об ошибке:
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'
Я включил это в мою модель "post":
attr_accessible :title, :name, :content, :post_image
mount_uploader :post_image, PostImageUploader
и в _form.html.erb Я добавил:
:html => { :multipart => true }
Я смотрел Ошибка CarrierWave, но это мне не помогает.
Любые подсказки того, что порождает эту ошибку? Я перенесла базу данных и т.д. (За ней следует руководство railscasts на несущей волне).
Ответы
Ответ 1
OP замечает, что он исправил его, однако ответа не было, поэтому я подумал, что добавлю его для людей, которые будут сталкиваться с этим в будущем, включая меня, пока не выясню это:)
undefined метод `x_will_change! ' для # произойдет, если вы забудете добавить столбец в свою таблицу db модели. Если у вас есть модель User и AvatarUploader, с загрузчиком, установленным как в документах Carrierwave:
class User < ActiveRecord::Base
mount_uploader :avatar, AvatarUploader
end
Затем ошибка будет читать
undefined method `avatar_will_change!' for #<User:0x00...>
Чтобы исправить это (на основе этого примера), добавьте столбец в прогон миграции в консоли:
rails g migration AddAvatarToUsers avatar:string
Это приведет к следующей миграции:
class AddAvatarToUsers < ActiveRecord::Migration
def change
add_column :users, :avatar, :string
end
end
Затем выполните миграцию, чтобы применить изменение (снова в консоли):
rake db:migrate
Ответ 2
Я предполагаю, что автор просто забыл запустить:
rake db:migrate
Кроме того, если вы встретили такую ошибку внутри своих тестов, вы должны запустить:
rake db:test:prepare
Ответ 3
Кроме того, для тех, кто получает эту ошибку на герою, вам нужно запустить
heroku run rake db:migrate
и
heroku restart
в терминале после добавления/удаления полей/таблиц из вашей базы данных.
Ответ 4
Kreek, это, очевидно, незначительный надзор, поскольку большинство людей уже поняли, что вы, вероятно, хотели запустить эту команду, как и за пределами консоли, в противном случае получилось бы следующее:
'NameError: undefined локальная переменная или метод `migrate' для main: Object '.
Ответ 5
У меня была похожая проблема, но моя была, потому что я копировал и вставлял коды и забыл удалить
mount_uploader :picture, PictureUploader
от моей модели, которая не использовала картинки. Надеюсь, что это поможет другим в будущем, которые не могли понять, что случилось