Rails 4.1设计3.3列users.password不存在

Mah*_*ubi 5 ruby ruby-on-rails devise

我想通过控制台手动创建用户:

User.find_or_create_by(email: "user@mail.com", first_name: "Stan", last_name: "Smith", password: "password", password_confirmation: "password", confirmed_at: Time.now)
Run Code Online (Sandbox Code Playgroud)

我在过去的项目中已经做了很多次,但这次它没有用.它没有获取Devise密码模型属性,所以这是我得到的错误:

PG::UndefinedColumn: ERROR:  column users.password does not exist
Run Code Online (Sandbox Code Playgroud)

我有Rails 4.1.4和Devise 3.3.0.最新版本有什么变化吗?

谢谢.

AJ *_*ory 11

而不是User.find_or_create_by你应该使用User.create.

Devise在创建时接受密码和密码确认,但实际表只有一个名为的列encrypted_password.

"查找"部分User.find_or_create_by正在寻找一个名为"密码"的列,该列不存在.


Sha*_*med 7

仍然如果你想使用find_or_create_by它,它接受块:

User.find_or_create_by(email: "user@mail.com", first_name: "Stan", last_name: "Smith") do |user|
  user.password = "password"
  user.confirmed_at = Time.now
end
Run Code Online (Sandbox Code Playgroud)