From f002be148e1377709ed28b8e80c5db76ee2fa410 Mon Sep 17 00:00:00 2001 From: Matt Tanous Date: Wed, 25 Jul 2018 17:04:34 -0400 Subject: Add :allow_nil option to delegate_missing_to; use in ActiveStorage attachment --- activestorage/CHANGELOG.md | 15 +++++++++++++++ activestorage/lib/active_storage/attached/one.rb | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'activestorage') diff --git a/activestorage/CHANGELOG.md b/activestorage/CHANGELOG.md index 1a03ead870..351d8687a4 100644 --- a/activestorage/CHANGELOG.md +++ b/activestorage/CHANGELOG.md @@ -1,3 +1,18 @@ +* Method calls on singular attachments return `nil` when no file is attached. + + Previously, assuming the following User model, `user.avatar.filename` would + raise a `Module::DelegationError` if no avatar was attached: + + ```ruby + class User < ApplicationRecord + has_one_attached :avatar + end + ``` + + They now return `nil`. + + *Matthew Tanous* + * The mirror service supports direct uploads. New files are directly uploaded to the primary service. When a diff --git a/activestorage/lib/active_storage/attached/one.rb b/activestorage/lib/active_storage/attached/one.rb index c039226fcd..003be1cb43 100644 --- a/activestorage/lib/active_storage/attached/one.rb +++ b/activestorage/lib/active_storage/attached/one.rb @@ -3,7 +3,7 @@ module ActiveStorage # Representation of a single attachment to a model. class Attached::One < Attached - delegate_missing_to :attachment + delegate_missing_to :attachment, allow_nil: true # Returns the associated attachment record. # -- cgit v1.2.3