我的用户模型具有头像附件
class User
has_attached_file :avatar, styles: { medium: '300x300#', thumb: '150x150#' }, default_url: :default_url_by_gender
def default_url_by_gender
if female?
'female.svg'
else
'male.svg'
end
end
end
在上传图像之前,avatar.url返回默认URL,当我上传图像并保存然后将其删除时,avatar.url仍然直接指向已删除的图像URL,而不是default_url
我使用以下代码删除头像:
user.avatar = nil
user.save
,并在检查后尝试了这些方法 question 1和question2 关于同一问题
user.avatar.destroy
user.save
#also tried this
user.update(avatar_file_name: nil, avatar_content_type: nil, avatar_file_size: nil)
我正在使用Rails 5.1.6,回形针(〜> 5.2.0)
答案 0 :(得分:1)
您需要使用purge
,而不是destroy
。根据官方文档,@nuxtjs/sitemap
要从模型中删除附件,请在附件上调用清除。如果您的应用程序设置为使用“活动作业”,则可以在后台进行删除。清除会从存储服务中删除Blob和文件。
# Synchronously destroy the avatar and actual resource files.
user.avatar.purge
# Destroy the associated models and actual resource files async, via Active Job.
user.avatar.purge_later
以完成的方式删除资产不会删除实例和资产之间的附件:
user.avatar.destroy
user.avatar.attached? => true
user.avatar.purge
user.avatar.attached? => false