保存前更改params哈希中的值



由于某些原因,无法正常工作

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)

然后它按预期工作

相关内容

  • 没有找到相关文章

最新更新