如果传递的参数相同,我需要将属性更新为nil
。
例如type
属性可以保持整数说1,2,3
,如果从我收到params[:type]
的视图1
,类型也是1
我需要将其设为nil
。
答案 0 :(得分:3)
@my_obj = MyObject.find(params[:id])
if params[:type] == @my_obj.type
@my_obj.update_attribute(:type, nil)
end
答案 1 :(得分:1)
实际上,最好的方法就是
params[:your_object][:test] = nil if params[:your_object][:test] == @your_object.type
@your_object.update_attributes(params[:your_object])
(简单代码:查看应重构的params[:your_object]
- >的重复)
您可能还希望分两步完成:首先提取类型,然后更新属性,但我认为这是更多的工作。
received_type = params[:your_object].delete(:type)
received_type = nil if received_type == @your_object.type
@your_object.update_attribute :type, received_type
#still do the rest of the update, without the type
@your_object.update_attributes(params[:your_object])
希望这有帮助。