bur*_*ren 32 railscasts carrierwave ruby-on-rails-3.1
我收到一个看起来像这样的错误:
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'
Run Code Online (Sandbox Code Playgroud)
我把它包含在我的"帖子"模型中:
attr_accessible :title, :name, :content, :post_image
mount_uploader :post_image, PostImageUploader
Run Code Online (Sandbox Code Playgroud)
并在_form.html.erb我添加了:
:html => { :multipart => true }
Run Code Online (Sandbox Code Playgroud)
我看了CarrierWave Error,但这对我没有帮助.
什么产生错误的线索?我已经迁移了数据库等等(紧跟载波的railscasts指南......)
kre*_*eek 118
OP评论他修复了它,但没有答案设置所以我想我会为将来遇到这个的人添加一个,其中包括我直到我想出来:)
未定义的方法`x_will_change!' 如果您忘记在模型的db表中添加列,则会发生#.如果你有一个模型User和一个AvatarUploader,那么在Carrierwave文档中安装上传器:
class User < ActiveRecord::Base
mount_uploader :avatar, AvatarUploader
end
Run Code Online (Sandbox Code Playgroud)
然后错误将会读取
undefined method `avatar_will_change!' for #<User:0x00...>
Run Code Online (Sandbox Code Playgroud)
要修复它(基于此示例),请在迁移中添加一个列,在控制台中运行以下命令:
rails g migration AddAvatarToUsers avatar:string
Run Code Online (Sandbox Code Playgroud)
这将生成以下迁移:
class AddAvatarToUsers < ActiveRecord::Migration
def change
add_column :users, :avatar, :string
end
end
Run Code Online (Sandbox Code Playgroud)
然后迁移以应用更改(再次在控制台中):
rake db:migrate
Run Code Online (Sandbox Code Playgroud)
我想作者只是忘了跑:
rake db:migrate
Run Code Online (Sandbox Code Playgroud)
另外,如果你在测试中遇到这样的错误,那么你应该运行:
rake db:test:prepare
Run Code Online (Sandbox Code Playgroud)
另外,对于在heroku上遇到此错误的任何人,您都需要运行
heroku run rake db:migrate
Run Code Online (Sandbox Code Playgroud)
和
heroku restart
Run Code Online (Sandbox Code Playgroud)
在从数据库中添加/删除字段/表后,在终端中单击。
| 归档时间: |
|
| 查看次数: |
16299 次 |
| 最近记录: |