轨道上的红宝石 3 - 设置身份验证逻辑 我一直在打:"undefined method `login' for #<UserSession: no credentials provided&



我正在尝试(不成功)为我的Rails3项目设置Authlogic。在user_sessions#new视图中,我一直得到以下错误:

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
<<p> UserSessions控制器/strong>
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 %>
<<p> UserSession模型/strong>
class UserSession < Authlogic::Session::Base
   # configuration here, see documentation for sub modules of Authlogic::Session
end

DB Schema (for authlogic tables)

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不使用我告诉它的登录列(或者这甚至是问题)?

您告诉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 %>

这个错误实际上可能有多种原因。最常影响我的是没有创建users表。

相关内容

  • 没有找到相关文章

最新更新