LoginSignup
0
0

More than 3 years have passed since last update.

[Rails][ActiveStorage] 特定のuserがavatarを持っているかどうか調べる

Posted at

あるuserがavatarを持っていない場合、 user.avatar にアクセスしようとすると例外が発生する。これを防ぐには user.avatar.attached? として事前にファイルが添付されているか調べるようにする。

class User < ApplicationRecord
  has_one_attached :avatar
end

user = User.last
user.avatar.attached?
=> false

# 添付がないのにアクセスしようとすると例外が発生
user.avatar.url
=> Module::DelegationError: url delegated to attachment, but attachment is nil

# 以下のようにすることで回避できる
user.avatar.url if user.avatar.attached?
=> nil

メモ:このコミットで例外が発生しないように対応されるよう
https://github.com/rails/rails/commit/f002be148e1377709ed28b8e80c5db76ee2fa410

追記:v6.1.0.rc1に上記コミットが入っていることを確認

user = User.last
user.avatar.attached?
=> false

# Rails 6.1.0.rc1 では例外発生しないように対応済み
user.avatar.url
=> nil

参考URL

Railsガイド
https://railsguides.jp/active_storage_overview.html

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0