NoMethodError:nil:NilClass的未定义方法“ body”

时间:2018-08-21 11:29:12

标签: ruby-on-rails carrierwave fine-uploader

我正在尝试重命名上传的文件,这是我在image_uploader.rb上的代码:

def filename
    if !cached? && file.present? 
      new_filename = 'wow.jpg'
      new_path = File.join(File.dirname(file.path), new_filename)
      new_sf = CarrierWave::SanitizedFile.new(new_path)
      cache!(new_sf)
      recreate_versions!
      new_filename
    else 
      super 
    end 
  end

在做

  

recreate_versions!

我遇到了这个错误:

  

NoMethodError:nil:NilClass的未定义方法“ body”

1 个答案:

答案 0 :(得分:0)

如果要重命名已上载和存储的文件,则可以使用move_to方法(documentation)。

让我们假设您有一个User型号,其中安装了avatar的载波。然后,从Rails控制台中,您可以调用:

User.find(1).avatar.path
=> /path/to/avatar/1/image.jpg

User.find(1).avatar.file.move_to("/path/to/avatar/1/new_image_name.jpg")

User.find(1).avatar.path
=> /path/to/avatar/1/new_image_name.jpg

不需要自定义代码,您的问题应该得到解决。