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

时间:2014-08-26 03:16:39

标签: ruby-on-rails ruby 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)

我在过去的项目中已多次这样做,但这次它没有用。它没有获取Devise密码模型属性,因此这是我得到的错误:

PG::UndefinedColumn: ERROR:  column users.password does not exist

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

感谢。

2 个答案:

答案 0 :(得分:10)

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

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

"发现" User.find_or_create_by的一部分正在寻找名为"密码"的列。哪个不存在。

答案 1 :(得分:6)

如果您想使用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