首页 > 解决方案 > 然后,如何确保仅在 Rails 5.2.1 中呈现 json 时才读取时间

问题描述

我有一个问题,我最近发现 Ruby 无法将 'Time HH:MM:SS' 保存到数据库中。如果您在 Rails 上的迁移中使用 time 类型,如下所示:

class CreateParkings < ActiveRecord::Migration[5.2]
  def change
    create_table :parkings do |t|
      t.date :ArrivalDate
      t.time :ArrivalTime
      t.date :DepartDate
      t.time :DepartTime
      t.integer :NumberOfPax
      t.string :Title
      t.string :Initial
      t.string :Surname
      t.string :Email
      t.string :Waiver
      t.string :Remarks
      t.string :ABTANumber
      t.references :user, foreign_key: true

      t.timestamps
    end
  end
end

Ruby 然后将记录按如下方式保存在 DB =>/HH:MM:SS

但是,当您从中检索数据并将其呈现为 json 时,它也会显示日期为“2000-01-01T23:12:15.000Z”

如下:

{
  "parking": {
    "id": 10,
    "ArrivalDate": "2018-09-19",
    "ArrivalTime": "2000-01-01T23:12:15.000Z",
    "DepartDate": "2018-09-19",
    "DepartTime": "2000-01-01T23:12:15.000Z",
    "NumberOfPax": 2018,
    "Title": "Mr Stanley",
    "Initial": "SM",
    "Surname": "Morris",
    "Email": "stanley.morris@someemail.com",
    "Waiver": "No Waiver",
    "Remarks": "I will be parking late in the evening. ",
    "ABTANumber": "HJKJKHDS123",
    "user": {
      "id": 1,
      "name": "admin",
      "email": "admin@admin.com",
      "admin": true,
      "member": true
    }
  }
}

如何确保仅在 json 中呈现时间。我读过我需要使用{Attribute}.strftime("%H:%M:%S"). 但我不知道如何循环通过停车场集合。并将每个属性转换为这种格式HH:MM:SS

如果您有任何想法,我将不胜感激。

标签: ruby-on-railspostgresqltimeruby-on-rails-5

解决方案


我会在Parking模型中创建一个方法,例如:

def formatted_arrival_time
  arrival_time.strftime("%H:%M:%S")
end

然后在序列化程序中,我会使用formatted_arrival_time而不是arrival_time


推荐阅读