加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 04:37:03 所属栏目:百科 来源:网络整理
导读:我正在运行“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"."
我正在运行“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-zd-.]+.[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,但我很确定错误是一样的)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读