次のようなエラーが発生します。
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'
これを「投稿」モデルに含めました。
attr_accessible :title, :name, :content, :post_image
mount_uploader :post_image, PostImageUploader
_form.html.erbに追加しました:
:html => { :multipart => true }
私は CarrierWave Error を見ましたが、それは私を助けません。
そのエラーを生成するものの手がかりはありますか?私はデータベースなどを移行しました(carrierwaveのrailscastsガイドに正確に従いました。)
OPは彼がそれを修正したとコメントしていますが、答えが設定されていないので、私がそれを理解するまで私を含めて、将来これに遭遇する人々のために1つ追加すると思いました:)
未定義のメソッド `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
著者は実行するのを忘れたと思います:
rake db:migrate
また、テスト内でこのようなエラーが発生した場合は、次のコマンドを実行する必要があります。
rake db:test:prepare
また、herokuでこのエラーが発生した場合は、実行する必要があります
heroku run rake db:migrate
そして
heroku restart
データベースからフィールド/テーブルを追加/削除した後のターミナル。
Kreek、これは明らかにマイナーな見落としです。ほとんどの人は今では気づいているでしょうが、おそらくコンソールの外でこのコマンドを実行するつもりでした。そうでなければ、次のようになります。
'NameError:undefined local variable or method `migrate' for main:Object '。
同様の問題がありましたが、コードをコピーして貼り付けていたため、削除するのを忘れていました。
mount_uploader :picture, PictureUploader
写真を使用していない私のモデルから。これが何が起こったのか理解できなかった将来の他の人を助けることを願っています