由于某些原因,无法正常工作
user_params[:height] = user_params[:height].to_i * 100
User.new(user_params)
它只是保存了";高度";参数为1.8,而它应该是180(换句话说,它不会按照代码的指示进行更改(。
在保存params哈希之前,我们如何简单地更改params哈希中的参数?
我试过的
我试过以上的
我也试过user_params[:height] = (user_params[:height].to_i * 100).to_s
,但也没用。
我可以确认它在正常哈希上工作:
h = {a: 1, b: 2}
=> {:a=>1, :b=>2}
h[:a] = h[:a] * 10
=> 10
h
=> {:a=>10, :b=>2}
所以我不知道为什么它不能在params散列上工作
这不是一个正确的答案,因为我无法解释为什么它能工作,但我必须创建一个新的哈希才能工作:
替换此:
user_params[:height] = user_params[:height].to_i * 100
User.new(user_params)
这个:
u = user_params.to_h
u[:height] = u[:height].to_i * 100
User.new(u)
然后它按预期工作