Gra*_*ier 2 devise ruby-on-rails-3.2
我在播放用户表时遇到问题.
(rails 3.2.6,jruby 1.6.7.2,devise 2.1.2)
这是一个非常通用的用户表,由"rails generate devise User"生成,加上此howto页面描述的修改,以便用户可以使用用户名而不是电子邮件地址登录.
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">
Run Code Online (Sandbox Code Playgroud)
我不确定为什么它说用户存在,因为表是并且仍然是空的,如下所示:
jruby-1.6.7.2 :013 > User.all
User Load (0.0ms) SELECT "users".* FROM "users"
=> []
Run Code Online (Sandbox Code Playgroud)
可能是验证功能出现故障.我可以在我的源代码中找到的唯一一个是find_first_by_auth_conditions我在上述howto页面中复制的(如指示),但这并不是因为它可能导致这一点.
我很感激任何帮助.什么阻止我创建这个用户?
更新:如果我使用以下,它的工作原理:
u = User.new(...)
u.save(:validate=>false)
Run Code Online (Sandbox Code Playgroud)
所以这意味着我的验证失败了.不幸的是,除了前面提到的一种方法,我没有编写任何验证.我该如何解决?
Gra*_*ier 10
啊.事实证明,该用户的密码太短.
看起来"用户存在"消息实际上是误导性的.如果您创建一个密码!=确认的用户,它会为您提供相同的功能.
在设计项目上创建了一个问题,看看是否可以改进.
https://github.com/plataformatec/devise/issues/1985
编辑:这个问题得到了解答,我发现我只是不知道如何阅读错误消息.
| 归档时间: |
|
| 查看次数: |
1936 次 |
| 最近记录: |