has_one_attached 时的默认附件

Dan*_*son 5 ruby-on-rails amazon-s3 rails-activestorage

我有一个带有has_one_attached :avatar, using 的用户模型ActiveStorage。头像是可选的,但当它不存在时,我想显示默认值。我将所有附件存储在 Amazon S3 上,并且更喜欢将默认附件存储在那里。

如果我也能够在默认头像上使用变体方法,我会更喜欢。

user.avatar.variant(resize: "100x100")
Run Code Online (Sandbox Code Playgroud)

关于如何实现这一目标有什么建议吗?我可以创建某种未链接到任何特定记录的默认附件,并在头像不存在时使用它吗?

Rut*_*ure -1

有两种方法,

  1. 默认

在模型中使用这个,(假设您正在使用回形针宝石)

:default_url => "/assets/:style/missing.jpeg"

2.说明书

您必须添加如下辅助方法,

  def avatar_check user
      if user.avatar.image.present?
        image_tag user.image_url :thumb
      else
        image_tag 'default.jpg'
      end
    end
Run Code Online (Sandbox Code Playgroud)

将 default.jpg 保存在资源中。

在下面的视图调用中,

User.all.each do |u|
= avatar_check u
Run Code Online (Sandbox Code Playgroud)

我不确定变量