diff options
| -rw-r--r-- | app/models/account.rb | 15 | ||||
| -rw-r--r-- | app/models/identity.rb | 1 | 
2 files changed, 13 insertions, 3 deletions
diff --git a/app/models/account.rb b/app/models/account.rb index 32ed445..bee540e 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -18,9 +18,18 @@ class Account    def self.create(attrs)      @user = User.create(attrs)      if @user.persisted? -      identity = @user.identity -      identity.user_id = @user.id -      identity.save +      @identity = @user.identity +      @identity.user_id = @user.id +      @identity.save +      @identity.errors.each do |attr, msg| +        @user.errors.add(attr, msg) +      end +    end +  rescue StandardError => ex +    @user.errors.add(:base, ex.to_s) +  ensure +    if @user.persisted? && (@identity.nil? || !@identity.persisted?) +      @user.destroy      end      return @user    end diff --git a/app/models/identity.rb b/app/models/identity.rb index 2f6241c..e7b5785 100644 --- a/app/models/identity.rb +++ b/app/models/identity.rb @@ -163,4 +163,5 @@ class Identity < CouchRest::Model::Base      end    end +  ActiveSupport.run_load_hooks(:identity, self)  end  | 
