Ruby on rails 如何拒绝fastjson_api中的属性?

Ruby on rails 如何拒绝fastjson_api中的属性?,ruby-on-rails,ruby,fastjsonapi,Ruby On Rails,Ruby,Fastjsonapi,我开始使用fastjson_api,我在我的项目中实现了基于属性的控制,在返回JSON数据时如何拒绝属性。 例如:- 我有一个客户表,其中有客户姓名、电子邮件、电话和地址 对于某些角色,我可以访问电话号码,而对于某些角色,我不会给他们访问权限 不允许\u属性=[“电话”] class CustomerSerializer include FastJsonapi::ObjectSerializer attributes :name, :email, :phone attribute

我开始使用fastjson_api,我在我的项目中实现了基于属性的控制,在返回JSON数据时如何拒绝属性。
例如:-
我有一个客户表,其中有客户姓名、电子邮件、电话和地址 对于某些角色,我可以访问电话号码,而对于某些角色,我不会给他们访问权限
不允许\u属性=[“电话”]

class CustomerSerializer
  include FastJsonapi::ObjectSerializer
  attributes :name, :email, :phone  
  attribute :phone do |object|
    unless not_allowed_attributes.include?"phone"
      object.phone
    end
  end
end
但这不是一种动态的实现方式,因此,每当不允许的属性发生更改时,它都应该动态地从JSON响应中过滤掉这些属性。
对于角色1不允许\u属性=[“电子邮件”、“电话”]
对于角色2不允许\u属性=[“电话”]

不允许属性我将在序列化程序的参数中发送它,并且可以根据它们的角色删除属性

您可以通过传入一个Proc来使用FastJSONAPI的。我不太清楚您的代码是如何实现角色的,但假设您有一个
管理员
角色,并且您希望在用户是管理员时显示手机。以下代码应适用于该用例:

class CustomerSerializer
  include FastJsonapi::ObjectSerializer
  attributes :name, :email, :phone  
  attribute :phone, if: Proc.new { |record| record.admin? }
end
您可以通过传入一个Proc来使用FastJSONAPI。我不太清楚您的代码是如何实现角色的,但假设您有一个
管理员
角色,并且您希望在用户是管理员时显示手机。以下代码应适用于该用例:

class CustomerSerializer
  include FastJsonapi::ObjectSerializer
  attributes :name, :email, :phone  
  attribute :phone, if: Proc.new { |record| record.admin? }
end

假设不允许的属性有其他角色的名称和电子邮件我需要为该属性定义一个块,它是否可以以这样的方式实现,即它应该检查并附加属性,否则它不应该附加属性。你能显示不允许的属性是什么样子吗?嗨,nwocha,谢谢你的回答,我编辑了这些问题,实际上,对于role1 not_allowed_attributes=[“phone”]和role2 not_allowed_attributes=[“email”]是否可以拒绝序列化程序类中的属性。假设not_allowed_attributes具有其他角色的名称和电子邮件,我需要为该属性定义一个块,它是否可以以这样一种方式实现,即它应该检查并附加属性,否则它就不应该附加属性。您能显示什么是不允许的属性吗?嗨,nwocha,感谢我编辑问题的回答,实际上是角色1不允许的属性=[“电话”]和角色2不允许的属性=[“电子邮件”]是否可以拒绝序列化程序类中的属性。