我尝试使用我使用seed_dump
gem获取的数据来种子数据库,found here.无论如何,生成的种子文件看起来是合法的,但它似乎与用户模型验证:
ActiveRecord :: RecordInvalid:验证失败:密码不能为空
要想一想种子看起来像这样:
User.create!([
{email: "1234@localhost", encrypted_password: "$2a$10$5eoHh6M2q4GjGkHClO.NqebWWhS94D8rNj5Ot6CB2qrbn7IrTfkSa", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 1, current_sign_in_at: "2014-12-31 22:27:09", last_sign_in_at: "2014-12-31 22:27:09", current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", admin: false}
])
另外,我使用devise
gem进行用户管理。
在给定此过滤器的情况下,是否有一种优雅的方式来播种用户数据?
答案 0 :(得分:1)
你可以这样做:
u = User.new([
{email: "1234@localhost", encrypted_password: "$2a$10$5eoHh6M2q4GjGkHClO.NqebWWhS94D8rNj5Ot6CB2qrbn7IrTfkSa", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 1, current_sign_in_at: "2014-12-31 22:27:09", last_sign_in_at: "2014-12-31 22:27:09", current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", admin: false}
])
u.save!(validate: false)
答案 1 :(得分:1)
有同样的问题。 User.new
解决方案不为我工作。
以下解决方案确实有效,来自“在设计中播种用户”的类似问题: Seeding users with Devise in Ruby on Rails
简而言之,将 encrypted_password 替换为密码 以及您习惯使用的纯文本密码。< / p>
示例:
User.create!([
{email: "1234@localhost", password: "some_password", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 1, current_sign_in_at: "2014-12-31 22:27:09", last_sign_in_at: "2014-12-31 22:27:09", current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", admin: false}
])
然后您可以运行rake db:seed
。 Rails将为每个用户发挥其魔力(通过自动创建 encrypted_password 哈希),您将能够正常登录。