User Exists (0.2ms) SELECT 1 AS one FROM "users" WHERE "users"."email"

vjn*_*369 1 model-view-controller model ruby-on-rails

在我的应用程序中,当我尝试创建一个用户时

 User.create(email:"jnan@gmail.com",encrypted_password: "foobar",name:"jnan")
Run Code Online (Sandbox Code Playgroud)

表明

  (0.1ms)  begin transaction
  User Exists (0.2ms)  SELECT  1 AS one FROM "users"  WHERE "users"."email" = 'jnan@gmail.com' LIMIT 1
 (0.1ms)  rollback transaction
=> #<User id: nil, email: "jnan@gmail.com", encrypted_password: "foobar", 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, name: "jnan">
Run Code Online (Sandbox Code Playgroud)

我的用户包含

=> User(id: integer, email: string, encrypted_password: string, reset_password_token: string, reset_password_sent_at: datetime, remember_created_at: datetime, sign_in_count: integer, current_sign_in_at: datetime, last_sign_in_at: datetime, current_sign_in_ip: string, last_sign_in_ip: string, created_at: datetime, updated_at: datetime, name: string)
Run Code Online (Sandbox Code Playgroud)

Mar*_*pka 6

而不是设置encrypted_password,你应该设置passwordpassword_confirmation

password = 'foobar'
User.create(email:'jnan@gmail.com',password: password, password_confirmation: password, name: 'jnan')
Run Code Online (Sandbox Code Playgroud)

  • 哈,有点奇怪,导致这个答案的讨论是在另一个答案上*困惑* :) 然后 OP 的问题解决了,他们忘记接受它了 :) (2认同)