如何在 Rails 请求中定义稀疏字段集
How to define a Sparse Fieldset in a Rails request
是否有一种简单的方法来实现在 rails JSON 请求中请求 Sparse Fieldset?
/some/endpoint.json?fields=id,name,favourite_colour
在你的控制器中你可以做类似的事情
render json: @sth, only: params[:fields].split(',').map(&:to_sym)
您还应该将其包装在一些强参数中,以禁止不存在的属性
(但我怀疑它是否是最佳解决方案)
我找到的一个解决方案是在序列化程序中执行此操作。
module V2
class BaseSerializer < ActiveModel::Serializer
self.root = true
def include?(field)
if @options.key?(:fields)
return @options[:fields].include? field.to_s
end
super field
end
end
end
是否有一种简单的方法来实现在 rails JSON 请求中请求 Sparse Fieldset?
/some/endpoint.json?fields=id,name,favourite_colour
在你的控制器中你可以做类似的事情
render json: @sth, only: params[:fields].split(',').map(&:to_sym)
您还应该将其包装在一些强参数中,以禁止不存在的属性
(但我怀疑它是否是最佳解决方案)
我找到的一个解决方案是在序列化程序中执行此操作。
module V2
class BaseSerializer < ActiveModel::Serializer
self.root = true
def include?(field)
if @options.key?(:fields)
return @options[:fields].include? field.to_s
end
super field
end
end
end