Active Record Dirty не показывает изменения для нулевого значения - PullRequest
0 голосов
/ 10 января 2019

У меня есть форма, которая отправляет параметры для поля даты (collected) как:

«Неверная дата», если дата не установлена ​​

«Некоторая фактическая дата», если дата установлена ​​

КОД

def ticket_params
  params.require(:ticket).permit(:collected, :ticket_number)
end

def list
  t = Ticket.new
  t.assign_attributes(ticket_params)

  if t.changes["ticket_number"].present?
    # Do something and build to save to DB
  end

  # Problem is here
  if t.changes["collected"].present?
    # Do something and build to save to DB
  end
end

ПРИМЕЧАНИЕ: collected - это поле datetime , а ticket_number - это целое число поле

Теперь, например

если collected: "2019-01-09T00:00:00-05:00", ticket_number: "null" тогда t.changes дает

{"ticket_number"=>[nil, 0], "collected"=>[nil, Wed, 09 Jan 2019 00:00:00 -0500]}

Но, аналогично, если collected: "Invalid Date", ticket_number: "null" тогда t.changes даст

{"ticket_number"=>[nil, 0]}

Теперь я хочу знать, когда дата была установлена ​​как недействительная, но t.changes не возвращает никакой информации об collected изменениях поля

ПРИМЕЧАНИЕ: Я не могу напрямую проверить значения параметров, я обязательно продолжу с t.changes (Active Record Dirty) способом

Я прошу прощения, если вопрос сбивает с толку. Моя основная цель - сделать collected на Active Record грязным

...