mysql一直在为RoR中的会话拉选择电子邮件NULL

时间:2011-09-20 02:51:41

标签: mysql ruby-on-rails session authentication cookies

我尝试使用Devise,但由于这对我没有用,我决定从头开始构建身份验证和会话。我意识到问题不是设计,而是mysql。出于某种原因,当我注册用户时,信息和属性存储在数据库中。当我使用电子邮件和密码登录时,它一直告诉我这是一个无效的电子邮件/密码。日志看起来像这样:

Processing by SessionsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"NFudGruZS79uwDrKzbHDQrBjlcwQ7AkC958vI4aHDAs=", "session"=>{"email"=>"first@abc.com", "password"=>"[FILTERED]"}, "commit"=>"Sign in"}
User Load (0.4ms)  SELECT `users`.* FROM `users` WHERE `users`.`email` IS NULL LIMIT 1

经过一番调查,我知道这不是因为我没有正确安装mysql或其他宝石,因为一个全新的应用程序工作正常。

有谁知道为什么它没有拉我输入的电子邮件而拉电子邮件却是NULL?

我应该只创建一个新数据库并将我的database.yml文件切换到新数据库吗?

提前致谢。

编辑 - 更多代码

用户模型:

class User < ActiveRecord::Base

 attr_accessor   :password
 attr_accessible :name, :email, :secondary_email, :password, :password_confirmation, :gender

has_many :user_owner_relationships
has_many :owners, :through => :user_owner_relationships
has_many :cash_endowments
has_many :checks, :through => :cash_endowments
has_many :owners, :through => :cash_endowments

email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i


validates :email,                 :presence => true,
                                  :uniqueness => { :case_sensitive => false },
                                  :format => { :with => email_regex }

validates :name,                  :presence => true,
                                  :length => { :maximum => 40 }

validates :password,              :presence => true,
                                  :confirmation => true,
                                  :length => { :within => 6..20 }

sessions_controller(用户控制器是标准的)

def new
 @title = "Sign in"
end

def create
  user = User.authenticate(params[:email], params[:password])
 if user
  session[:user_id] = user.id
  redirect_to root_path, :notice => "Welcome '#{user.first_name}"
 else
  flash.now.alert = "Invalid email or password."
  render "new"
 end
end

1 个答案:

答案 0 :(得分:0)

新秀错误 -

实际上是因为我的会话控制器的new.html.erb没有从这段代码中拉出:session符号:

<%= form_for (:session, :url => sessions_path) do |f| %>

所以我最后改为使用form_tag。