不能把电子邮件地址栏登录表单上(Authlogic) [英] Can't put email address field on login form (Authlogic)
问题描述
所以我有Authlogic工作的罚款与此 user_sessions /新
查看:
So I have Authlogic working fine with this user_sessions/new
view:
<% form_for @user_session, :url => user_session_path do |f| %>
<% if @user_session.errors.present? %>
Invalid username or password
<% end %>
<%= f.label :login %><br />
<%= f.text_field :login %><br />
<br />
<%= f.label :password %><br />
<%= f.password_field :password %><br />
<br />
<%= f.check_box :remember_me, :style => 'margin-right: 10px' %>
<%= f.label :remember_me %><br />
<br />
<%= f.submit "Login" %>
<% end %>
但是,当我换
<%= f.label :login %><br />
<%= f.text_field :login %><br />
到
<%= f.label :email %><br />
<%= f.text_field :email %><br />
当我加载认为我得到这个错误:
I get this error when I load the view:
undefined method `email' for #<UserSession: no credentials provided>
但是,当然,我的用户表有一个电子邮件
字段,等等。
推荐答案
您打算对这个错误的方式:
You are going about this the wrong way:
尝试:
class UserSession < Authlogic::Session::Base
find_by_login_method :find_by_login_or_email
end
和在user.rb
def self.find_by_login_or_email(login)
find_by_login(login) || find_by_email(login)
end
您UserSession没有电子邮件的概念(它只知道登录)。
Your UserSession has no concept of email (it just knows about login).
它贯穿找到给出一个登录用户,可以拦截并重写的过程(与 find_by_login_method
)。对于一个额外的好处,你也可以重写, login_field
和 password_field
甚至 verify_password_method
It runs through a process of finding a User given a login, which you can intercept and override (with the find_by_login_method
). For an added bonus you can also override, login_field
and password_field
or even verify_password_method
这篇关于不能把电子邮件地址栏登录表单上(Authlogic)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!