rails will_save_change_to奇怪的行为

时间:2018-06-14 20:30:45

标签: ruby-on-rails activerecord ruby-on-rails-5.1

我遇到了将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的任何见解在这里发生,我一直在试图理解它的时候在墙上撞了一会儿。

0 个答案:

没有答案