2010-05-23 36 views
2

我根據AuthLogic示例設置了AuthLogic for Rails:http://github.com/binarylogic/authlogic_example一個AuthLogic表單給我錯誤的驗證錯誤 - 爲什麼?

我可以成功登錄到系統,但用戶訪問時/ new.html.erb註冊一個新用戶,形式返回以下驗證錯誤:

Email is too short (minimum is 6 characters) 
Email should look like an email address. 
Login is too short (minimum is 3 characters) 
Login should use only letters, numbers, spaces, and [email protected] please. 
Password is too short (minimum is 4 characters) 
Password confirmation is too short (minimum is 4 characters) 

這些錯誤都不存在我輸入的數據。

# new.html.erb 
<%= form.label :login, nil, :class => "label" %><br /> 
<%= form.text_field :login, :class => "inputBox", 
    :name => "login", :type => "text" %><br /> 

<%= form.label :password, form.object.new_record? ? nil : "Change password", :class => "label" %><br /> 
<%= form.password_field :password, :class => "inputBox", 
    :name => "password", :type => "text" %><br /> 

<%= form.label "Confirm password", nil, :class => "label" %><br /> 
<%= form.password_field :password_confirmation, :class => "inputBox", 
    :name => "password_confirmation", :type => "text" %><br /> 

<%= form.label :email, nil, :class => "label" %><br /> 
<%= form.text_field :email, :class => "inputBox", 
    :name => "email", :type => "text" %><br /> 

# Users controller 
def new 
    @user = User.new 
    render :layout => "forms" 
end 

我認爲問題在於,數據沒有被以某種方式傳輸,並且因此AuthLogic並不認爲輸入是足夠的。你有什麼想法,爲什麼AuthLogic告訴我數據不能滿足其驗證?

------更多信息------

# User model 
class User < ActiveRecord::Base 
    acts_as_authentic 
    belongs_to :authenticable, :polymorphic => true 
end 

# Users controller, def create: 
def create 
    @user = User.new(params[:user]) 
    if @user.save 
    flash[:notice] = "Account registered!" 
    redirect_back_or_default account_url 
    else 
    render :action => :new 
    end 
end 
+0

您可以添加用於創建操作和用戶模型代碼的代碼嗎?嘗試通過紅寶石控制檯創建用戶,看看你是否得到任何錯誤。還有一個 – Vamsi 2010-05-23 05:10:24

回答

5

檢查PARAMS [:用戶],看看它是否發送正確的價值觀

您還可以刪除在acts_as_authentic添加以下領域模型中的驗證:

acts_as_authentic do |c| 
c.validate_login_field = false 
c.validate_email_field = false 
c.validate_password_field = false 
end 
1

只是一個想法,你有沒有質量分配中較高比你的模型類禁用?

我已經收到凡在我的初始化屬性我殘疾質量分配,然後忘了把我的模型的屬性,如訪問使用模型類中的所有必需的屬性attr_accessible這一點。

1

有一點是不在文檔和視頻中明確指出:即使在模型中可能有crypted_pa​​ssword(即attr_accessible:password),attr_accessible行仍需要密碼。

我不確定,但我假設authlogic使用此密碼變量來保存明文文本版本,然後加密它。

我不建議設置c.validate_password_field = false,因爲這也會關閉加密。