как рельсы «обновляют» несколько столбцов правильно (также должен быть обновлен 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 также обновляет текущую метку времени?