我正在使用rabl 0.11.6作为我的API,我发现自己会在每个日期或时间对象上一遍又一遍地执行以下操作:
node :created_at do |article|
article.created_at.iso8601
end
如果可以在一个地方设置每个日期对象的格式,那么它可以节省大量的代码重复,这样我就可以像这样使用attributes
方法了
attributes :created_at
我在github(https://github.com/ccocchi/rabl-rails/issues/68)上发现了一个问题,他们建议在初始化程序中覆盖一些Oj.default_options = { mode: :compat, time_format: :ruby }
。但我不知道如何做.iso8601
。
然后我找到了这个https://gist.github.com/astevens/b80225d96d8889c946ac。但它看起来像一个hacky猴子补丁解决方案。
最后我发现了这个问题https://github.com/nesquena/rabl/issues/336,它们会覆盖as_json
中的ActiveSupport::TimeWithZone
方法,这也是一个非常适合猴子的解决方案。
有没有办法告诉RABL使用什么日期和时间格式?如果没有,那么实现这一目标的最佳/最不实用的方法是什么?
答案 0 :(得分:2)
FWIW我在rails 4.2.8,Rabl 0.13.1和OJ 2.18.5中解决了这个问题
添加具有以下内容的初始化程序..
Oj.default_options = {:use_as_json => true}
答案 1 :(得分:0)
听起来很疯狂,但这可以通过更改JSON序列化程序来解决:
bundle add oj