Ruby on rails Carrierwave文件名在更新属性时不断更改

Ruby on rails Carrierwave文件名在更新属性时不断更改,ruby-on-rails,ruby-on-rails-3,carrierwave,update-attributes,Ruby On Rails,Ruby On Rails 3,Carrierwave,Update Attributes,我有模型公司和公司已安装carrierwave上传标志 class Company < ActiveRecord::Base mount_uploader :logo, LogoUploader 为什么logo在这里被更新为新值,即使没有给出新值?如何避免这种情况?我也经历了同样的情况,并发现上传程序类的“filename方法不应设置新文件名,除非出现原始文件名。CarrierWave提供了关于文件名的信息,该信息并没有直接解决这个问题,但足以提供线索 比如说, 每次更新模型时,此代

我有模型公司和公司已安装carrierwave上传标志

class Company < ActiveRecord::Base
  mount_uploader :logo, LogoUploader

为什么logo在这里被更新为新值,即使没有给出新值?如何避免这种情况?

我也经历了同样的情况,并发现上传程序类的“
filename
方法不应设置新文件名,除非出现
原始文件名。CarrierWave提供了关于文件名的信息,该信息并没有直接解决这个问题,但足以提供线索

比如说,

每次更新模型时,此代码都会更改文件名字段

class SampleUploader < CarrierWave::Uploader::Base
  def filename
    "#{Time.now.strftime('%Y%m%d%H%M%S')}.jpg"
  end
end
class SampleUploader
然而,这个额外的if语句阻止了前面的行为

class SampleUploader < CarrierWave::Uploader::Base
  def filename
    "#{Time.now.strftime('%Y%m%d%H%M%S')}.jpg" if original_filename.present?
  end
end
class SampleUploader
每次使用新文件名或现有文件名时,数据库中的文件名值仍在更改?更新前的原始文件名是什么?您的意思是
1396206630_1f288be4.jpg
是一个新文件名吗?使用新文件名。虽然没有上载新文件。这应该是可接受的答案。为我工作。尽管如此,每次更新记录时carrierwave都会触发这个filename方法,这很奇怪。
class SampleUploader < CarrierWave::Uploader::Base
  def filename
    "#{Time.now.strftime('%Y%m%d%H%M%S')}.jpg" if original_filename.present?
  end
end