由于用户无效,保存失败。这是我在控制台中运行的内容:
RAILS_ENV=production rails c
clear_password = SecureRandom.urlsafe_base64(12)
salt = User.generate_salt
hashed_password = User.hash_password("#{salt}#{User.hash_password clear_password}")
admin_user = User.new({firstname: 'Bob', lastname: 'Doe', mail: 'john@doe.com'})
admin_user.login = 'adminuser'
admin_user.admin = true
admin_user.mail_notification = true
admin_user.status = 1
admin_user.salt = salt
admin_user.hashed_password = hashed_password
admin_user.valid?
User Exists (0.6ms) SELECT 1 AS one FROM `users` WHERE `users`.`type` IN ('User', 'AnonymousUser') AND `users`.`login` = 'adminuser' LIMIT 1
User Exists (0.3ms) SELECT 1 AS one FROM `users` WHERE `users`.`type` IN ('User', 'AnonymousUser') AND `users`.`mail` = 'bob@doe.com' LIMIT 1
=> false
这几乎没有给我一个调试消息,因为db中当前没有用户。任何见解将不胜感激!
更新
我在设置每个属性后调用了valid?
。问题似乎与mail_notification
有关。我删除它,似乎产生有效。我完全解决后会更新答案。
答案 0 :(得分:0)
使用:
user.save!
强制代码引发异常并显示有关失败或使用原因的消息:
user.save
puts user.errors.full_messages.join(", ")
打印对象创建的所有错误消息,以便您可以找出缺少的内容。