我遇到了将rails 4.2 app更新为5.1的奇怪情况。出于调试目的,我已从用户模型中删除了所有内容,现在它已完全为空标准模型:
[1] pry> user = User.new(...)
=> #<User:0x007fa5abbe02f0 ... >
[2] pry> user.save
=> true
[3] pry> user.will_save_change_to_password?
=> nil
[2] pry> user
=> #<User:0x007fa5abbe02f0 ... >
[4] pry> user.will_save_change_to_password?
=> true
[5] pry> user.changes
=> {"username"=>["68c0bad3-d661-4008-9728-2dcb192f2ba1", "68c0bad3-d661-4008-9728-2dcb192f2ba1"], "password"=>["cebb41d5-5421-4de6-8c48-04ce735b1bb7", "cebb41d5-5421-4de6-8c48-04ce735b1bb7"]}
我在测试此模型时遇到问题,我已将其跟踪到will_save_change_to_password的行为。我看到的问题是:
00501
这对我来说完全没有意义。保存模型后,AR同意不会更改密码。然后你访问用户对象(你也可以调用具有相同效果的用户对象上的方法),突然它认为密码会改变。如果你问它,它说密码改为完全相同的密码(用户名相同)!
我很乐意对wtf的任何见解在这里发生,我一直在试图理解它的时候在墙上撞了一会儿。