2011-04-06 5 views
1

Я пытаюсь (безуспешно) настроить Authlogic для моего проекта Rails3. В user_sessions # новый вид, я получаю следующее сообщение об ошибке:Настройка Authlogic Я продолжаю бить: «undefined method` login »для # <UserSession: никаких учетных данных не предоставлен>«

undefined method `login' for #<UserSession: no credentials provided> 
Extracted source (around line #7): 

5: <%= form_for(:user_session, :url => user_session_path) do |f| %> 
6:  <%= f.label :login %><br> 
7:  <%= f.text_field :login %><br> 
8:  <%= f.password_field(:password) %> 
9:  <%= f.submit %> 
10: <% end %> 

Я считаю, что ошибка приходит потому, что Authlogic не в состоянии определить, какой столбец базы данных следует использовать для поля регистрации.

Я был в понимании того, что Authlogic должен возвращаться на столбец: email, если столбец входа отсутствует. Для пояса и подтяжек я попытался добавить параметр конфигурации к классу пользователя, но она до сих пор не решила проблему

Вот мой код:

модели пользователя

class User < ActiveRecord::Base 

    attr_accessible :password, :password_confirmation 
    acts_as_authentic do |c| 
    c.login_field = :email 
    end 
end 

UserSessions контроллер

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

    # ... 
end 

UserSessions # новый вид

<%= form_for(:user_session, :url => user_session_path) do |f| %> 
    <%= f.label :login %><br> 
    <%= f.text_field :login %><br> 
    <%= f.password_field(:password) %> 
    <%= f.submit %> 
<% end %> 

UserSession модель

class UserSession < Authlogic::Session::Base 
    # configuration here, see documentation for sub modules of Authlogic::Session 
end 

DB схемы (для authlogic таблиц)

create_table "sessions", :force => true do |t| 
    t.string "session_id", :null => false 
    t.text  "data" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
end 

add_index "sessions", ["session_id"], :name => "index_sessions_on_session_id" 
add_index "sessions", ["updated_at"], :name => "index_sessions_on_updated_at" 

create_table "users", :force => true do |t| 
    t.string "email" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.string "first_name" 
    t.string "last_name" 
    t.string "crypted_password" 
    t.string "password_salt" 
    t.string "persistence_token" 
end 

Почему не Authlogic использовать столбец входа я сказать ему (или это даже проблема)?

ответ

3

Вы говорите AuthLogic, что используете поле email, но затем вместо этого используйте поле login. Измените ваш вид на:

<%= form_for(:user_session, :url => user_session_path) do |f| %> 
    <%= f.label :email %><br> 
    <%= f.text_field :email %><br> 
    <%= f.password_field(:password) %> 
    <%= f.submit %> 
<% end %> 

и он должен работать.

+0

Ух - спасибо! Я потратил так долго, пытаясь понять это, и все же, такие как простое исправление! –

1

Эта ошибка может произойти по нескольким причинам. Тот, который наиболее часто меня затрагивает, НЕ имеет созданную таблицу пользователей.

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

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