diff options
author | Azul <azul@leap.se> | 2013-11-05 11:40:25 +0100 |
---|---|---|
committer | Azul <azul@leap.se> | 2013-11-05 11:40:25 +0100 |
commit | b4ca13257341792f5e6496264c421af1888bcdb8 (patch) | |
tree | ce573e9b360b389ab83f21fc360e9d9434423f63 | |
parent | d4f835662fac2d9dca705b5cba2e207562dec833 (diff) |
refactor: Identity.disable_all_for(user) on user destruction
This way the identity model defines how identities should be disabled. We currently still destroy them. But it will be easy and nicely isolated to change this next.
-rw-r--r-- | users/app/models/account.rb | 4 | ||||
-rw-r--r-- | users/app/models/identity.rb | 12 |
2 files changed, 13 insertions, 3 deletions
diff --git a/users/app/models/account.rb b/users/app/models/account.rb index 5368a1b..726f642 100644 --- a/users/app/models/account.rb +++ b/users/app/models/account.rb @@ -29,9 +29,7 @@ class Account def destroy return unless @user - Identity.by_user_id.key(@user.id).each do |identity| - identity.destroy - end + Identity.disable_all_for(@user) @user.destroy end diff --git a/users/app/models/identity.rb b/users/app/models/identity.rb index e0a24e9..c24af73 100644 --- a/users/app/models/identity.rb +++ b/users/app/models/identity.rb @@ -50,6 +50,12 @@ class Identity < CouchRest::Model::Base identity end + def self.disable_all_for(user) + Identity.by_user_id.key(user.id).each do |identity| + identity.disable + end + end + def self.attributes_from_user(user) { user_id: user.id, address: user.email_address, @@ -57,6 +63,12 @@ class Identity < CouchRest::Model::Base } end + # + # about to change towards actually disabling the identity instead of + # destroying it. + # + alias_method :disable, :destroy + def keys read_attribute('keys') || HashWithIndifferentAccess.new end |