Ruby on rails 已附加\u一个\u时的默认附件
我有一个带有Ruby on rails 已附加\u一个\u时的默认附件,ruby-on-rails,amazon-s3,rails-activestorage,Ruby On Rails,Amazon S3,Rails Activestorage,我有一个带有的用户模型,它附带了一个:avatar,使用ActiveStorage。 头像是可选的,但当它不存在时,我想显示一个默认值。我将所有附件存储在AmazonS3上,并且更愿意将默认附件也存储在那里 我更希望我能在默认的化身上使用不同的方法 user.avatar.variant(resize: "100x100") 对如何实现这一目标有何建议?我是否可以创建某种默认附件,该附件不链接到任何特定记录,并在化身不存在时使用该附件?有两种方法 违约 在模型中使用此选项(假设您使用的是回形针
的用户模型,它附带了一个:avatar
,使用ActiveStorage
。
头像是可选的,但当它不存在时,我想显示一个默认值。我将所有附件存储在AmazonS3上,并且更愿意将默认附件也存储在那里
我更希望我能在默认的化身上使用不同的方法
user.avatar.variant(resize: "100x100")
对如何实现这一目标有何建议?我是否可以创建某种默认附件,该附件不链接到任何特定记录,并在化身不存在时使用该附件?有两种方法
def avatar_check user
if user.avatar.image.present?
image_tag user.image_url :thumb
else
image_tag 'default.jpg'
end
end
在资产中保存default.jpg
鉴于以下呼吁
User.all.each do |u|
= avatar_check u
我不确定varient是否会附加默认图像,只需检查是否附加了图像,如果没有,则显示默认图像。
present?
方法在这种情况下不起作用,请使用attached?
def display_avatar(user)
if user.avatar.attached?
user.avatar
else
'default.png'
end
end
我没有使用papercip,所以第一种方法很不幸是不可行的。第二种方法也不起作用,因为它不适用于
variant
,我正在创建一个API,所以image\u标记不可用。使用ActiveStorage。该解决方案的问题是,我无法访问变量,而且它也没有存储在S3上(可能是硬编码的),只需访问视图中的variant方法即可。我不会将默认值存储在S3上,只是将其作为资产包含。