将属性更新为nil

时间:2011-02-08 08:57:12

标签: ruby-on-rails ruby

如果传递的参数相同,我需要将属性更新为nil

例如type属性可以保持整数说1,2,3,如果从我收到params[:type]的视图1,类型也是1我需要将其设为nil

2 个答案:

答案 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])

希望这有帮助。