我有一个问题,我最近发现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
如果您有任何想法,我将不胜感激。
我会在Parking
模型中创建一个方法,如:
def formatted_arrival_time
arrival_time.strftime("%H:%M:%S")
end
然后在序列化器中,我会使用formatted_arrival_time
而不是arrival_time