summaryrefslogtreecommitdiff
path: root/app/models/account.rb
diff options
context:
space:
mode:
authorAzul <azul@leap.se>2014-05-29 09:38:53 +0200
committerAzul <azul@leap.se>2014-05-29 09:38:53 +0200
commit016e61ce9ab44cf58355e843b0c0d0085d373fc7 (patch)
tree71db39cc057ed486baec19c73e7c5b121f650de4 /app/models/account.rb
parent5b601707c8af8454dacf2edd846bc3386e148253 (diff)
catch corner cases of account creation
Users now always check if their identity is valid. We need to make sure this works if the user is a new record and once it has been persisted. While the user is a new record the identity will have no user_id. Old identities that are left to block the login of a user who canceled their account also have a blank user_id. They still should render the new identity invalid so the user can't be saved with a login that has been reserved. Once the user has been persisted we set the user_id on the identity and save it too when creating an Account. This allows us to create a plain user and save it and it will still have an in memory identity only. But the default is to create the user by means of creating an account so an identity will be created as well.
Diffstat (limited to 'app/models/account.rb')
-rw-r--r--app/models/account.rb9
1 files changed, 6 insertions, 3 deletions
diff --git a/app/models/account.rb b/app/models/account.rb
index bffa288..32ed445 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -16,10 +16,13 @@ class Account
# Returns the user record so it can be used in views.
def self.create(attrs)
- @user = User.create(attrs).tap do |user|
- Identity.create_for user
- user.refresh_identity
+ @user = User.create(attrs)
+ if @user.persisted?
+ identity = @user.identity
+ identity.user_id = @user.id
+ identity.save
end
+ return @user
end
def update(attrs)