All pastes #807649 Raw Edit

Mine

public text v1 · immutable
·published 2007-12-06 22:14 UTC
rendered paste body
## model
class User < ActiveRecord::Base
  has_many :openids
  has_many :ownings, :dependent => :destroy
  has_many :items, :through => :ownings

  def self.create_with_openid(identity_url)
    new_user = User.create
    new_user.openids << Openid.create({:uri => identity_url})
    return new_user
  end
end

## controller snip
  def complete
...
    when OpenID::Consumer::SUCCESS
      flash[:alert] = "Verification of #{identity_url} succeeded."
      openid = Openid.find_by_uri(identity_url)
      if openid
        flash[:alert] += " existing user"
        authorized_user = openid.user
      else
        flash[:alert] += " new user"
        authorized_user = User.create_with_openid(identity_url)
      end
logger.info("a_u = #{authorized_user.inspect}")
      self.current_user = authorized_user

## lib/login.rb
  def current_user=(new_user)
    logger.info("*** #{new_user.class.name} #{new_user.inspect}")
debugger
    new_user.id
  end


## ruby debugger
(rdb:22) p new_user
#<User id: 1, guid: nil, name: nil, username: nil, password: nil>
(rdb:22) p new_user.id
SystemStackError Exception: stack level too deep
(rdb:22) p new_user.name
nil
(rdb:22) p new_user.name = "dod"
"dod"
(rdb:22) p new_user
#<User id: 1, guid: nil, name: "dod", username: nil, password: nil>
(rdb:22) p new_user.id
SystemStackError Exception: stack level too deep
(rdb:22)

## logfile snippit
Processing WelcomeController#complete (for 192.168.0.2 at 2007-12-06 14:03:54) [GET]
  Openid Load (0.007669)   SELECT * FROM openids WHERE (openids."uri" = E'http://donpdonp.myopenid.com/') LIMIT 1
  User Load (0.008888)   SELECT * FROM users WHERE (users."id" = 1)
a_u = #<User id: 1, guid: nil, name: nil, username: nil, password: nil>
*** User #<User id: 1, guid: nil, name: nil, username: nil, password: nil>


SystemStackError (stack level too deep):
    /vendor/rails/activerecord/lib/active_record/attribute_methods.rb:56:in `generated_methods?'
    /vendor/rails/activerecord/lib/active_record/attribute_methods.rb:186:in `method_missing'
    /vendor/rails/activerecord/lib/active_record/attribute_methods.rb:194:in `method_missing'
    /vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb:124:in `send'
    /vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb:124:in `method_missing'
    /lib/login.rb:9:in `current_user='
    /app/controllers/welcome_controller.rb:61:in `complete'
...