gpt4 book ai didi

ruby-on-rails - Rails - 通过控制台插入数据库行不起作用

转载 作者:行者123 更新时间:2023-12-03 15:45:40 26 4
gpt4 key购买 nike

我正在尝试通过我的 Rails 控制台将新记录插入到 SQLiteDB 中。只需使用 User.create() .

该行没有出现在我的数据库中。该消息暗示用户存在,但正在调用 User.first返回 null并检查数据库显示一个空表。我错过了什么?

输入:

console > User.create(name: 'don', email: 'don@gmaill.com', password: 'test', password_confirmation: 'test')

输出:
   (0.1ms)  begin transaction
User Exists (0.1ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = 'don@gmaill.com' LIMIT 1
(0.0ms) rollback transaction
=> #<User id: nil, name: "don", email: "don@gmaill.com", created_at: nil, updated_at: nil, password_digest: "$2a$10$3EK3L932ryjrJPFIc4E0/uzavrpkWylDRzx4Wkdwzx8d...">

用户类别:
class User < ActiveRecord::Base
before_save { self.email = email.downcase }
validates :name, presence: true, length: { maximum: 50 }

VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sen,sitive: false }

has_secure_password
validates :password, length: { minimum: 6 }
end

最佳答案

您很可能正在验证 email 的唯一性 field 。因此,ActiveRecord 发出 select首先检查是否存在具有相同电子邮件地址的记录,然后找到一个。因此 Create没有将新记录保存到数据库。

但是create无论如何返回对象。

你可以试试这个来验证这一点。而不是 create , 试试 new其次是 save!

console > u = User.new(name: 'don', email: 'don@gmaill.com', password: 'test', password_confirmation: 'test')
console > u.save!

要摆脱这个错误,首先删除数据库中存在的记录

关于ruby-on-rails - Rails - 通过控制台插入数据库行不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19782161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com