RoR-Model.all,但不包含created_at和Updated_at字段

Vol*_*eee 5 ruby model ruby-on-rails

我是Ruby的新手,所以这个问题对您来说可能看起来很愚蠢,是的。但是还是...我有一个模型组,当我运行它时

class GroupsController < ApplicationController
  prepend SimpleCommand
    ...
    def index
        @group = Group.all
        render json: @group
    end
    ...
    # some other stuff
Run Code Online (Sandbox Code Playgroud)

...然后我得到一个如下数组的响应:

[
  {
    "id": 1020,
    "name": "??-16-1",
    "has_subgroups": true,
    "created_at": "2017-09-29T10:14:08.000Z",
    "updated_at": "2017-09-29T10:14:08.000Z"
  }
...
]
Run Code Online (Sandbox Code Playgroud)

但是我不想拥有最后两个字段,所以我的答案是如何在响应中摆脱“ created_at”和“ updated_at”字段?

UPD:

在原始问题中找到了一个很好的解决方案,而我不小心为此做了一个重复。继续阅读

Cyz*_*far 1

每次您向视图提供对象时,JSON Rails 都会内部调用该函数as_json。摆脱这两个字段的一种方法是覆盖Group模型中的该函数:

 class Group < ActiveRecord::Base
      def as_json(options={})
        { id: id,
          name: name,
          has_subgroups: has_subgroups
        }
      end
  end
Run Code Online (Sandbox Code Playgroud)

或者正如 @MrYoshiji 建议的那样,您可以像这样过滤掉它们:

render json: @groups.to_json(except: [:created_at, :updated_at])
Run Code Online (Sandbox Code Playgroud)