Authlogic metody current_user current_user_session

Kilka razy używałem już Authlogica, ale teraz męczy mnie jedno.
W README http://github.com/binarylogic/authlogic/blob/master/README.rdoc mają taki przykład

[code]class ApplicationController
helper_method :current_user_session, :current_user

private
  def current_user_session
    return @current_user_session if defined?(@current_user_session)
    @current_user_session = UserSession.find
  end

  def current_user
    return @current_user if defined?(@current_user)
    @current_user = current_user_session && current_user_session.user
  end

end[/code]
Czemu metody current_user, current_user_session niekorzystają z operatora ||= (wie ktoś jak on ladnie się nazywa?)

[code]def current_user_session
@current_user_session ||= UserSession.find
end

def current_user
@current_user ||= current_user_session && current_user_session.user
end[/code]
Implementacja korzytająca z defined? jest w jakiś sposób lepsza?

irb(main):008:0> @current_user = nil => nil irb(main):009:0> @current_user ||= (puts "nie ma cache, trza ustawic"; true) nie ma cache, trza ustawic => true
ale:

irb(main):010:0> @current_user = nil => nil irb(main):012:0> puts "current user='#{@current_user}'" if defined?(@current_user) current user='' => nil
||= odpala prawą stronę jeśli po lewej jest nil. A w wypadku braku usera tak właśnie będzie. Twoja wersja będzie ZAWSZE szukać usera od początku jeśli taki nie istnieje.

Ok, wiem jak to działa.
Ale taki kod w kontrolerze przy implementacji z defined?

[code]user_session = UserSession.new(params)

if user_session.save

cokolwiek na zalogowanym uzytkowniku

current_user.login
end

Skutek: NoMethodError: undefined method `login’ for nil:NilClass[/code]

Podejrzewam, że filtr wcześniej już ustawił @current_user na nil a user_session.save nie zmieniło tej wartości. Chyba musisz ręcznie ustawić @current_user:

[code=ruby]user_session = UserSession.new(params)

if user_session.save
@current_user = user_session.user

cokolwiek na zalogowanym uzytkowniku

current_user.login
end[/code]