diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2017-07-05 18:31:49 +0200 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2017-07-05 18:31:53 +0200 |
commit | e3ade5fd2dc76235ecc98999f44217c470eb72e1 (patch) | |
tree | 353061742c8dd97812b27d7b57c60d596485d71a /lib/active_vault/attached/macros.rb | |
parent | c2fa570e2ec853c2e29325cbc4e90d03f7095f22 (diff) | |
download | rails-e3ade5fd2dc76235ecc98999f44217c470eb72e1.tar.gz rails-e3ade5fd2dc76235ecc98999f44217c470eb72e1.tar.bz2 rails-e3ade5fd2dc76235ecc98999f44217c470eb72e1.zip |
Default to purging later when the owning record is destroyed
Diffstat (limited to 'lib/active_vault/attached/macros.rb')
-rw-r--r-- | lib/active_vault/attached/macros.rb | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/active_vault/attached/macros.rb b/lib/active_vault/attached/macros.rb index 8cc84a95a9..1b95c14c9c 100644 --- a/lib/active_vault/attached/macros.rb +++ b/lib/active_vault/attached/macros.rb @@ -1,15 +1,23 @@ module ActiveVault::Attached::Macros - def has_one_attached(name) + def has_one_attached(name, dependent: :purge_later) define_method(name) do instance_variable_get("@active_vault_attached_#{name}") || instance_variable_set("@active_vault_attached_#{name}", ActiveVault::Attached::One.new(name, self)) end + + if dependent == :purge_later + before_destroy { public_send(name).purge_later } + end end - def has_many_attached(name) + def has_many_attached(name, dependent: :purge_later) define_method(name) do instance_variable_get("@active_vault_attached_#{name}") || instance_variable_set("@active_vault_attached_#{name}", ActiveVault::Attached::Many.new(name, self)) end + + if dependent == :purge_later + before_destroy { public_send(name).purge_later } + end end end |