## 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 # (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 # (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 # 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' ...