Si un utilisateur n'a pas d'avatar, une exception sera lancée lors de la tentative d'accès à user.avatar
. Pour éviter cela, vérifiez si le fichier est préalablement joint en tant que `user.avatar.attached?
class User < ApplicationRecord
has_one_attached :avatar
end
user = User.last
user.avatar.attached?
=> false
#Une exception se produit lors de la tentative d'accès sans pièce jointe
user.avatar.url
=> Module::DelegationError: url delegated to attachment, but attachment is nil
#Cela peut être évité en procédant comme suit
user.avatar.url if user.avatar.attached?
=> nil
Remarque: ce commit sera traité pour ne pas déclencher d'exception https://github.com/rails/rails/commit/f002be148e1377709ed28b8e80c5db76ee2fa410
Postscript: confirmez que le commit ci-dessus est inclus dans la v6.1.0.rc1
user = User.last
user.avatar.attached?
=> false
# Rails 6.1.0.rc1 a été corrigé afin qu'aucune exception ne se produise
user.avatar.url
=> nil
Guide des rails https://railsguides.jp/active_storage_overview.html
Recommended Posts