ruby-on-rails - 然后,如何确保仅在 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
如果您有任何想法,我将不胜感激。
解决方案
我会在Parking
模型中创建一个方法,例如:
def formatted_arrival_time
arrival_time.strftime("%H:%M:%S")
end
然后在序列化程序中,我会使用formatted_arrival_time
而不是arrival_time