ruby-on-rails – 数据未进入sqlite数据库 – Ruby on Rails

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 数据未进入sqlite数据库 – Ruby on Rails前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在运行“rails console”然后执行以下命令:
User.create(name:"John",email:"test@email.com",password:"foo",password_confirmation:"foo")

我得到这个:

(0.1ms)  begin transaction
  User Exists (0.2ms)  SELECT 1 FROM "users" WHERE LOWER("users"."email") = LOWER('test@email.com') LIMIT 1
   (0.1ms)  rollback transaction
 => #<User id: nil,name: "John",email: "test@email.com",created_at: nil,updated_at: nil,password_digest: "$2a$10$mY0/9RgjwOU46ZYcSC0TFOCMxrPiqWTEHWe1K27O/3Ya...">

当我使用sqlite数据库浏览器检查sqlite数据库文件时,我什么也看不见.

这是我的用户模型:

class User < ActiveRecord::Base

    #these attributes can be modified by the users
    attr_accessible :name,:email,:password,:password_confirmation
    #ruby's way of calling a method below...
    has_secure_password

    #validation testing
    validates :name,presence: true,length: { maximum: 50 }
    #regular expression (there is an official one)
    VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
    #and add it..
    validates :email,format: { with: VALID_EMAIL_REGEX },uniqueness:  { case_sensitive: false }
    #validate password 
    validates :password,length: {minimum: 6}
    validates :password_confirmation,presence: true

end

为什么数据没有输入我的数据库

无论我输入什么,我都会收到这个错误

这例如:

1.9.3p125 :005 > User.create(name:"Smith",email:"smith@email.com",password_confirmation:"foo")
   (0.1ms)  begin transaction
  User Exists (0.1ms)  SELECT 1 FROM "users" WHERE LOWER("users"."email") = LOWER('smith@email.com') LIMIT 1
   (0.0ms)  rollback transaction
 => #<User id: nil,name: "Smith",email: "smith@email.com",password_digest: "$2a$10$6nzyRJ0IplI6B4bSoQEtUOIcrbFVl1ix3EAKPGJZjZQf...">

我从未通过该电子邮件进入史密斯用户,我仍然得到“用户存在”!

编辑:

我收到了错误.密码限制是5我输入了3个字母的密码
所以当我输入这个:

User.create(name:"Smith",password:"foobar",password_confirmation:"foobar")
   (0.1ms)  begin transaction
  User Exists (0.2ms)  SELECT 1 FROM "users" WHERE LOWER("users"."email") = LOWER('smith@email.com') LIMIT 1
Binary data inserted for `string` type on column `password_digest`
  sql (1.7ms)  INSERT INTO "users" ("created_at","email","name","password_digest","updated_at") VALUES (?,?,?)  [["created_at",Mon,12 Mar 2012 00:16:42 UTC +00:00],["email","smith@email.com"],["name","Smith"],["password_digest","$2a$10$v/FqAuUPpbdIJ44jVHxbKOJt/uoBTJVkP4KIhzJHNcF8rWPFfKusi"],["updated_at",12 Mar 2012 00:16:42 UTC +00:00]]
   (266.9ms)  commit transaction
 => #<User id: 1,created_at: "2012-03-12 00:16:42",updated_at: "2012-03-12 00:16:42",password_digest: "$2a$10$v/FqAuUPpbdIJ44jVHxbKOJt/uoBTJVkP4KIhzJHNcF8...">

我工作,但我仍然得到这个奇怪的用户存在错误…任何想法?

解决方法

刚到这里使用谷歌搜索,发现问题是什么.实际上,这是一个垃圾错误信息.即使有一个干净的数据库,它也会出现.问题是:密码只有3个字符长,这将导致问题
validates :password,length: {minimum: 6}

所以,如果你尝试使用更长的密码(和确认),它应该工作.(PS:我使用的是MysqL服务器,而不是sqlite,但我很确定错误是一样的)

原文链接:https://www.f2er.com/ruby/269535.html

猜你在找的Ruby相关文章