2011-06-25 150 views
0

我試圖使用authlogic,但顯然我做錯了什麼。成功創建用戶(在控制檯中用User.all驗證)後,我會嘗試登錄,但只能失敗。我究竟做錯了什麼?無法登錄使用AuthLogic

此外,RubyMine的標記 UserSession.new(PARAMS [:USER_SESSION]) 爲錯誤的,因爲UserSession.new沒有參數 是,僅僅用的RubyMine有問題?

這裏是我的模型代碼


class User < ActiveRecord::Base 
    acts_as_authentic do |config| 
    config.login_field = :email 
    end 

    validate :cannot_exceed_100_users 

    protected 
    def cannot_exceed_100_users 
    if User.count > 100 
     errors.add_to_base('Cannot have more than 100 users.') 
    end 
    end 
end 


class UserSession < Authlogic::Session::Base 
    def to_key 
    [session_key] 
    end 
end 

這裏是我的控制器代碼


class UserSessionsController < ApplicationController 
    def new 
    @user_session = UserSession.new 
    end 

    def create 
    @user_session = UserSession.new(params[:user_session]) 
    if @user_session.save 
     logger.info 'success' 
     redirect_to games_path 
    else 
     logger.info 'failed' 
     render :action=>'new' 
    end 
    end 

    def destroy 
    current_user_session.destroy 
    redirect_to new_user_session_path 
    end 
end 

這裏是我的登錄頁面代碼


<div> 
    <%= form_tag :action=>'create' do %> 
    <p>Please Log In</p> 

    <div> 
     <label for="email">Email:</label> 
     <%= text_field_tag :email, params[:email] %> 
    </div> 

    <div> 
     <label for="password">Password</label> 
     <%= password_field_tag :password, params[:password] %> 
    </div> 

    <div> 
     <%= submit_tag "Login" %> 
    </div> 
    <% end %> 

    <%= link_to 'register', new_user_path %> 
</div> 

回答

0

我覺得你錯誤地創建會話。我不是Authlogic大師,但我覺得你supposed to do it like this

session = UserSession.new(:login => params[:email], :password => params[:password]) 
session.save 

或者,你可以使用create

session = UserSession.create(:login => params[:email], :password => params[:password]) 

所有Authlogic構造似乎採取命名參數的哈希(使用通常的Ruby自動hashization),這可能是爲什麼RubyMine抱怨你的UserSession.new調用具有不正確的參數。

+0

嗨,感謝您的回覆;我認爲params [:user_session]與明確列出的東西是一樣的。讓我先試試它。 – Max

+0

RubyMine實際上是說構造函數接受零參數。我想我會忽略那部分。 – Max

+0

沒有,仍然無法登錄。 – Max