From 29db6b3cb26708fa174e1e90dc7088cff92b8083 Mon Sep 17 00:00:00 2001 From: George Claghorn Date: Tue, 29 Aug 2017 18:30:26 -0400 Subject: Refactor --- activestorage/lib/active_storage/attached/one.rb | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'activestorage/lib/active_storage/attached') diff --git a/activestorage/lib/active_storage/attached/one.rb b/activestorage/lib/active_storage/attached/one.rb index 87c650b3d0..ac90f32d95 100644 --- a/activestorage/lib/active_storage/attached/one.rb +++ b/activestorage/lib/active_storage/attached/one.rb @@ -21,7 +21,9 @@ module ActiveStorage # person.avatar.attach(io: File.open("~/face.jpg"), filename: "face.jpg", content_type: "image/jpg") # person.avatar.attach(avatar_blob) # ActiveStorage::Blob object def attach(attachable) - purge_dependent_attachment do + if attached? && dependent == :purge_later + replace attachable + else write_attachment create_attachment_from(attachable) end end @@ -54,17 +56,13 @@ module ActiveStorage end private - def purge_dependent_attachment - if attached? && dependent == :purge_later - blob.tap do - transaction do - destroy - yield - end - end.purge_later - else - yield - end + def replace(attachable) + blob.tap do + transaction do + destroy + write_attachment create_attachment_from(attachable) + end + end.purge_later end def create_attachment_from(attachable) -- cgit v1.2.3