我在播种用户表时遇到问题。
(轨道 3.2.6,jruby 1.6.7.2,设计 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">
我不确定为什么它说用户存在,因为该表曾经并且仍然是空的,如下所示:
jruby-1.6.7.2 :013 > User.all
User Load (0.0ms) SELECT "users".* FROM "users"
=> []
可能是验证功能出现故障。我可以在我的源代码中找到的唯一一个是find_first_by_auth_conditions
我从上述方法页面中复制(按指示)的那个,但在我看来这并不像它可能导致这种情况。
我会很感激任何帮助。是什么阻止我创建此用户?
更新:如果我使用以下内容,它可以工作:
u = User.new(...)
u.save(:validate=>false)
所以这意味着我的验证在某个地方失败了。不幸的是,除了我前面提到的一种方法之外,我还没有编写任何验证代码。我该如何解决?