gpt4 book ai didi

devise - 无法将第一个用户插入 Rails/devise 用户表

转载 作者:行者123 更新时间:2023-12-02 06:20:24 28 4
gpt4 key购买 nike

我在为我的用户表做种子时遇到问题。

(rails 3.2.6,jruby 1.6.7.2,devise 2.1.2)

这是一个非常通用的用户表,由“rails generate devise User”生成,加上 this howto page 描述的修改以便用户可以使用用户名而不是电子邮件地址登录。

rails db:seed 没有给出任何错误指示,日志也没有。当我使用 sqlite 控制台确认时,表是空的。 是的,它正在使用开发环境。我对此进行了双重和三次检查。

当我使用 rails console 并输入创建命令时,我得到了这个:

1178 ~/dev/proj$ rails console
Loading development environment (Rails 3.2.6)
jruby-1.6.7.2 :001 > User.create(
jruby-1.6.7.2 :002 > :username => 'admin',
jruby-1.6.7.2 :003 > :email => 'admin@fake.com',
jruby-1.6.7.2 :004 > :password => 'admin',
jruby-1.6.7.2 :005 > :password_confirmation => 'admin',
jruby-1.6.7.2 :006 > )
User Exists (1.0ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = 'admin@x.com' LIMIT 1
=> #<User id: nil, email: "admin@fake.com", encrypted_password: "$2a$10$SMz0xdF.BkPV.4IX4TZ6Zu9WbQEk6kvap7mSGfwA7cLe...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: nil, updated_at: nil, username: "admin">

我不确定为什么它说用户存在,因为表过去和现在都是空的,如下所示:

jruby-1.6.7.2 :013 > User.all
User Load (0.0ms) SELECT "users".* FROM "users"
=> []

可能是验证功能出现故障。我在我的源代码中唯一能找到的是 find_first_by_auth_conditions 我从上述 howto 页面复制(按指示)的一个,但在我看来这不是导致此问题的原因。

如果有任何帮助,我将不胜感激。是什么阻止我创建此用户?

更新:如果我使用以下内容,它会起作用:

u = User.new(...)
u.save(:validate=>false)

所以这意味着我的验证在某处失败了。不幸的是,除了我前面提到的一种方法之外,我没有编写任何验证代码。我该如何解决?

最佳答案

呃。原来是这个用户的密码太短了。

看起来“用户存在”消息实际上具有误导性。如果您创建一个密码 != 确认的用户,它会给您同样的结果。

在设计项目上创建了一个问题,看看是否可以改进。
https://github.com/plataformatec/devise/issues/1985

编辑:这个问题得到了解答,我发现我只是不知道如何阅读错误消息。

关于devise - 无法将第一个用户插入 Rails/devise 用户表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11550868/

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