Подтвердить что ты не робот

Несущая - рельсы 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 на несущей волне).

4b9b3361

Ответ 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

от моей модели, которая не использовала картинки. Надеюсь, что это поможет другим в будущем, которые не могли понять, что случилось