2010-05-23 1 views
2

Я установил AuthLogic для Rails в соответствии с примером AuthLogic: 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

Можете ли вы добавить код для создания действия и код модели пользователя? Попробуйте создать пользователя через консоль ruby ​​и посмотреть, получаете ли вы какие-либо ошибки. И один – Vamsi

ответ

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

Одна вещь, которая не является ясно в документации и в видео, заключается в следующем: пароль по-прежнему требуется в строке attr_accessible, даже если у вас может быть crypted_password в модели (т.е. attr_accessible: password).

Я не уверен, но я предполагаю, что authlogic использует эту переменную пароля для хранения текстовой версии до ее шифрования.

Я не рекомендую устанавливать c.validate_password_field = false, потому что это также отключает шифрование.

 Смежные вопросы

  • Нет связанных вопросов^_^