我的用户模型has_one_attached :avatar
这里我有一些验证方法
validate :validate_avatar_presence
validate :validate_avatar_format
validate :validate_avatar_size
private
def validate_avatar_presence
errors.add(:avatar, 'should exist') unless self.avatar.attached?
end
def validate_avatar_size
if self.avatar.attached?
purge_avatar('File is too big') if self.avatar.blob.byte_size > 2000000
end
end
def validate_avatar_format
if self.avatar.attached?
purge_avatar('Wrong format') unless self.avatar.blob.content_type.starts_with?('image/')
end
end
def purge_avatar(msg)
errors.add(:avatar, msg)
avatar.purge_later
end
无论我上传什么,用户头像都会更新。如果验证失败,则头像变为零,否则我将得到上传的内容。我试图通过before_update回调进行验证。它不起作用。
答案 0 :(得分:2)
Active Storage当前不支持验证,但是Rails 6.0将提供全面的支持。在6.0发行之前,请使用avoids storing files when validations fail的Rails master。
答案 1 :(得分:1)
似乎ActiveStorage目前不支持验证。根据{{3}}。
答案 2 :(得分:0)