你如何确保只在Rails 5.2.1中渲染json时才读取时间

问题描述 投票:0回答:1

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

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": "[email protected]",
    "Waiver": "No Waiver",
    "Remarks": "I will be parking late in the evening. ",
    "ABTANumber": "HJKJKHDS123",
    "user": {
      "id": 1,
      "name": "admin",
      "email": "[email protected]",
      "admin": true,
      "member": true
    }
  }
}

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

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

ruby-on-rails postgresql time ruby-on-rails-5
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.