你会如何从活动模型序列化器中剥离一些东西?

时间:2014-05-08 21:01:53

标签: ruby-on-rails active-model-serializers

我希望在名为roles的模型上使用活动模型序列化,这会使角色和角色权限回吐。但是,我想告诉Active Model Serializer,如果角色名称是Administrator,你应该从不将它包含在返回的角色的json中。

因此,如果我通过api调用对角色执行showindex操作,我绝不会在返回的结果中看到Administrator

现在这就是角色序列化的全部内容:

class RoleSerializer < ActiveModel::Serializer
  attributes :id, :role
end

我会在这里或控制器中进行索引和显示吗?如果是的话我该怎么办?

1 个答案:

答案 0 :(得分:0)

Active Model序列化程序的工作不是选择应该和不应该在json中返回哪些记录。为此,您希望使用范围或至少where语句。

您可能也可以跳过自定义序列化程序,只需将您想要的属性传递给to_json

class Role < ActiveRecord::Base

  scope :without_adminstrators, -> { where('role <> "Administrator"') }

end

class RolesController < ApplicationController

  def non_administrator
    Role.without_adminstrators.to_json(only: [:id, :role])
  end

end