我是Ruby的新手,所以这个问题对你来说可能看起来很愚蠢,是的。但还是...... 我有一个模型组,当我运行这个
class GroupsController < ApplicationController
prepend SimpleCommand
...
def index
@group = Group.all
render json: @group
end
...
# some other stuff
...然后我得到一个像这样的数组响应:
[
{
"id": 1020,
"name": "НІ-16-1",
"has_subgroups": true,
"created_at": "2017-09-29T10:14:08.000Z",
"updated_at": "2017-09-29T10:14:08.000Z"
}
...
]
但我不想拥有那两个最后的字段,所以我的回答是 如何摆脱响应中的“created_at”和“updated_at”字段?
在原始问题中找到了一个很好的解决方案我不小心复制了。来吧看看吧
答案 0 :(得分:1)
每次将对象提供给视图时,JSON Rails会在内部调用函数as_json
。摆脱这两个字段的一种方法是在Group
模型中覆盖该函数:
class Group < ActiveRecord::Base
def as_json(options={})
{ id: id,
name: name,
has_subgroups: has_subgroups
}
end
end
或者@MrYoshiji建议你可以像这样过滤掉它们:
render json: @groups.to_json(except: [:created_at, :updated_at])
答案 1 :(得分:1)
Rails默认带有jbuilder来生成json响应。您只需找到group/index.json.jbuilder
并删除里面的created_at
和updated_at
即可。并将控制器操作更改为:
def index
@group = Group.all
end
或者如果您需要支持其他格式:
def index
@group = Group.all
respond_to do |format|
format.json
end
end
您可以看到您不必指定任何内容,因为Rails默认会使用您的jbuilder文件。
答案 2 :(得分:1)
你可以这样做:
class GroupsController < ApplicationController
prepend SimpleCommand
...
def index
render json: Group.pluck(:id, :name, :has_subgroups)
end
end
对你来说可能无关紧要,但我认为这种方法更快,因为它没有实例化所有Group
个对象。