如何检查删除图像?我无法检查,因为在保存 averter.present 之前? return 是的

How to check remove image? I can not check because before save averter.present? return true

我用carrierwaveuploader/carrierwave: Classier solution for file uploads for Rails, Sinatra and other Ruby web frameworks.

@foo.assign_attributes(update_params) #=> update_params includes "remove_avatar"=>"1"
@foo.avatar.present? #=> true
@foo.save
@foo.avatar.present? #=> false

保存前 present? return true。保存后 present? return false.

我的验证

validate :validate_avatar

def validate_avatar
  # if @foo.avatar deleted and same conditions, add error
end

validate_avatar中,@foo.avatar.present?true因为在保存之前。

我试试after_save :validate_avatar.

after_save :validate_avatar

def validate_avatar
  # if @foo.avatar deleted and same conditions, add error
  # then return false
end

因为after_save,@foo.avatar.present?false。但是 Rails5 不回滚 return false.

如何检查 @foo.avatar 在验证中删除?

我想检查 avatar 已删除但保留图像裁剪数据。所以我需要检查 @foo.avater 删除或不删除。 如果 avatar 被删除,图像裁剪数据也会被删除。所以检查验证。

已经制作了删除我项目中所有图像裁剪数据(xxx_crop 列)的方法。

在你的控制器中你可以

if @foo.save
  <do whatever>
else
  render json: @foo.errors

所以@foo 将有一个错误属性。

您可以使用 remove_avatar?.

@foo.remove_avatar? #=> true or false.

  • 如果 truesave
  • 头像将被删除
  • 如果falsesave
  • ,则头像不会被删除