我希望在名为roles的模型上使用活动模型序列化,这会使角色和角色权限回吐。但是,我想告诉Active Model Serializer,如果角色名称是Administrator,你应该从不将它包含在返回的角色的json中。
因此,如果我通过api调用对角色执行show
或index
操作,我绝不会在返回的结果中看到Administrator
。
现在这就是角色序列化的全部内容:
class RoleSerializer < ActiveModel::Serializer
attributes :id, :role
end
我会在这里或控制器中进行索引和显示吗?如果是的话我该怎么办?
答案 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