как рельсы «обновляют» несколько столбцов правильно (также должен быть обновлен updated_at)

У меня возникают проблемы с корректным обновлением нескольких столбцов с помощью rails activerecords. Я хочу использовать что-то вроде update, который в основном обновляется updated_at, но я просто не могу передать несколько столбцов. Я мог бы использовать update_all, но он не обновляет updated_at с текущей отметкой времени.

Вот что я попробовал:

это не работает: (принимает только payment_total, но не остальные)

retval = @invoice.update(:payment_total => 20, 
                         :due_amount => 10, 
                         :data => clonedata.to_json)  

:data - this is actually a json field

выход:

nothing

это работает:

 retval = Invoice.where(:id => @invoice.id).update_all(:payment_total => 20, 
                                                     :due_amount => 10, 
                                                     :data => clonedata.to_json)

вывод: (обратите внимание, что это не обновляет поле "updated_at")

ОБНОВЛЕНИЕ SQL (1.1ms) "Счета-фактуры" SET "payment_total" = '30 .00 ', "due_amount" = '86 .00', "data" = name {“name”: ”Test} 'WHERE“ invoices ”." Id "= 6

один параметр будет работать:

retval = @invoice.update(:payment_total => 20)

выход:

UPDATE "invoices" SET "due_amount" = $1, "updated_at" = $2 WHERE "invoices"."id" = 6
  [["due_amount", "86.0"], ["updated_at", "2014-05-18 03:48:49.718692"]]

Теперь, как я могу использовать нечто подобное для обновления нескольких столбцов, в то время как updated_at также обновляет текущую метку времени?

Ответы на вопрос(3)

Ваш ответ на вопрос