Active Record Dirty不显示零值的更改

时间:2019-01-10 11:15:24

标签: ruby-on-rails ruby-on-rails-4

我有一个将日期字段(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日期时间字段,而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上

0 个答案:

没有答案
相关问题