У меня есть форма, которая отправляет параметры для поля даты (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 грязным