首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置Authlogic我一直点击:“用于#<UserSession的未定义方法‘登录’:没有凭据provided>”

设置Authlogic我一直点击:“用于#<UserSession的未定义方法‘登录’:没有凭据provided>”
EN

Stack Overflow用户
提问于 2011-04-06 21:31:33
回答 2查看 3.2K关注 0票数 2

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

代码语言:javascript
复制
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列。对于带带和大括号,我尝试在用户类中添加一个配置选项,但仍然没有解决问题。

这是我的代码:

用户模型

代码语言:javascript
复制
class User < ActiveRecord::Base

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

UserSessions控制器

代码语言:javascript
复制
class UserSessionsController < ApplicationController  
  def new
    @user_session = UserSession.new
  end

  # ...
end

UserSessions#new视图

代码语言:javascript
复制
<%= 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模型

代码语言:javascript
复制
class UserSession < Authlogic::Session::Base
   # configuration here, see documentation for sub modules of Authlogic::Session
end

数据库架构(用于创作表)

代码语言:javascript
复制
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不使用我告诉它的登录列(或者这甚至是问题所在)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-06 21:38:52

您告诉AuthLogic使用email字段,然后在视图中使用login字段。将您的观点更改为:

代码语言:javascript
复制
<%= 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 %>

而且它应该能工作。

票数 3
EN

Stack Overflow用户

发布于 2017-03-17 11:32:19

此错误可能由于多种原因而实际发生。最经常影响我的是没有创建users表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5573208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档