我有一个包含多个字段的模型我想复制,但我想更改其中一个属性,即units
属性。
所以我去了:
new_item = old_item.dup
new_item.units = 0
我将此传递给模板,并允许用户指定多个单位。
然后我就去:
new_item.units = params[:units]
new_item.save
但我获得的值始终是原始ActiveRecord实例的值。
事实上,如果你这样做:
new_item = old_item.dup
new_item.units = 0
new_item.units = 500
new_item.save
new_item.units
的值为old_item.units
。
这里发生了什么?
我在:
ruby 2.0.0p353 (2013-11-22 revision 43784) [i686-linux]
Rails 4.0.5
答案 0 :(得分:0)
您应该将params[:units]
作为强大的参数进行消毒(参见http://edgeapi.rubyonrails.org/classes/ActionController/StrongParameters.html)。请查看未经许可的参数:单位等短语的日志。如果是这样,只需添加params.permit(:units)
。
答案 1 :(得分:0)
在Rails 4.0.5上向另一位用户验证这是一个已在4.1中修复的错误。