我有一个Rails控制器响应
JSON对象.让我们来看理论这个例子:
respond_to :json def index respond_with Comment.all end
这会有类似的回应
[{"id":1,"comment_text":"Random text ","user_id":1,"created_at":"2013-07-26T15:08:01.271Z","updated_at":"2013-07-26T15:08:01.271Z"}]
我正在寻找的是一种“最佳实践”方法来干扰json对象的格式化并返回如下内容:
[{"id":1,"username": "John Doe","created_at":"3 hours ago"}]
正如你所看到的,我正在添加一个在数据库模型“username”中不存在的列,我正在取出“updated_at”,并且我将“created_at”格式化为包含人类可读文本而不是日期.
有人想过吗?
解决方法
覆盖as_json或使用JSON ERB视图可能很麻烦,这就是我更喜欢使用ActiveModel Serializers(或RABL)的原因:
class CommentSerializer < ActiveModel::Serializer include ActionView::Helpers::DateHelper attributes :id,:created_at def created_at time_ago_in_words(object.created_at) end end
在这里查看更多信息:
> https://github.com/rails-api/active_model_serializers
> https://github.com/nesquena/rabl