我一直在寻找一个最简单的解决方案,在将所有datetime值从api发送给特定的请求者时,将它们转换为iso 8601。我可以用以下方法修补Time#to_json
:
class Time
def to_json(options = {})
self.iso8601.to_json
end
end
当params显示请求来自所需位置时,需要grape的
before
回调中的文件。这是实现这一目标的最好方法吗?我可以在grape的
after
回调中做些什么来循环我的数据并在那里转换值吗?猴子修补可以完成任务,但我觉得很有趣。虽然我对鲁比还不熟悉。 最佳答案
您是否使用grape实体来公开您的模型?如果正在使用它,则可以定义一个可重用的格式化程序,如下所示:
module ApiHelpers
extend Grape::API::Helpers
Grape::Entity.format_with :iso8601 do |date|
date.iso8601 if date
end
end
然后,可以在所有实体中使用此格式化程序:
module Entities
class MyModel < Grape::Entity
expose :updated_at, format_with: :iso8601
end
class AnotherModel < Grape::Entity
expose :created_at, format_with: :iso8601
end
end
但如果你不使用葡萄实体…好吧,我觉得你应该。:)
注:我在这里展示的所有例子都是从葡萄实体文档中提取出来的。
https://github.com/ruby-grape/grape-entity