обновление атрибута до нуля - PullRequest
3 голосов
/ 08 февраля 2011

Мне нужно обновить атрибут как nil, если переданный параметр совпадает.

Например, атрибут type может содержать целые числа, скажем 1,2,3, если из представления я получаю params[:type]как 1 и тип также 1 Мне нужно сделать это как nil.

Ответы [ 2 ]

3 голосов
/ 08 февраля 2011
@my_obj = MyObject.find(params[:id])

if params[:type] == @my_obj.type
  @my_obj.update_attribute(:type, nil)
end
1 голос
/ 08 февраля 2011

На самом деле лучший способ сделать это что-то вроде

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...