Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 保存到数据库时的Rails nil值_Ruby On Rails 3_Authentication - Fatal编程技术网

Ruby on rails 3 保存到数据库时的Rails nil值

Ruby on rails 3 保存到数据库时的Rails nil值,ruby-on-rails-3,authentication,Ruby On Rails 3,Authentication,我试图在rails内部实现一个用户身份验证系统,这是我的模型: class User < ActiveRecord::Base attr_accessible :id, :email, :name, :password, :created_at, :updated_at has_secure_password before_save { email.downcase! } validates :email, presence: true, :uniqueness =&

我试图在rails内部实现一个用户身份验证系统,这是我的模型:

class User < ActiveRecord::Base 
  attr_accessible :id, :email, :name, :password, :created_at, :updated_at
  has_secure_password

  before_save { email.downcase! }

  validates :email, presence: true, :uniqueness => { :case_senstive => false }

  validates :name, presence: true

  validates :password, presence: true, length: { minimum: 6 }
end
在其上运行
valid
将返回
true
,但在保存记录时,我收到错误:

users.password may not be NULL
散列
中提取
密码可以正常工作

有什么问题


谢谢

您在哪里设置
:password\u confirmation
?文档中的示例表明您需要它


主要问题在于
是否有安全的密码。如果您使用的是字符串字段
:password\u digest
(这是保存加密密码的地方)。您还需要删除字段
:密码
,以及您的状态验证程序。在添加
gem'bcrypt-ruby'之后,“~>3.0.0”
。 现在这应该行了

user = User.new(:name => "A", :email => "a@a.a", 
                :password => "password", :password_confirmation => "password")
但最好使用伟大的宝石。它有你需要的一切

新增

您应该有
attr\u accessible
用于
:password\u confirmation
,并且该字段应在表单中使用


我认为在最新版本中,
:密码确认
是可选的。该字段是必填字段。但如果您的表单中不需要它,您可以在保存之前在控制器中设置该字段:
user.password\u confirmation=user.password
i已安装
password\u digest
bcrypt
gem。我不能在这个项目中使用Desive
user = User.new(:name => "A", :email => "a@a.a", 
                :password => "password", :password_confirmation => "password")