На самом деле лучший способ сделать это что-то вроде
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])
Надеюсь, это поможет.