You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制JSONAPI::Resources中可通过include参数请求的关联模型

JSONAPI::Resources 限制include关联范围的实现方法

单资源自定义允许列表

直接在对应业务的资源类中调用allow_include方法,显式声明仅允许被include的关联字段即可,示例如下:

class PostResource < JSONAPI::Resource
  attributes :title, :content, :published_at

  # 关联声明
  has_one :author
  has_many :comments
  has_many :ratings

  # 仅允许include author关联,其他关联请求会直接返回400错误
  allow_include :author
end

配置后如果发起?include=comments这类未授权的关联请求,接口会自动返回参数校验错误,无需额外编写业务校验代码。

嵌套关联的允许配置

如果需要支持嵌套include,比如允许?include=author.profile,直接将嵌套关联路径加入允许列表即可:

allow_include :author, 'author.profile'

全局默认关闭自动允许include

如果希望所有资源默认都不允许任何include,必须显式声明才能使用,可以修改JSONAPI::Resources的全局初始化配置:
打开config/initializers/jsonapi_resources.rb,添加如下配置:

JSONAPI.configure do |config|
  # 其他原有配置保留,新增这行
  config.allow_include_by_default = false
end

该配置开启后,所有资源的关联默认都不允许被include,只有在对应资源类中通过allow_include显式声明的关联才能被正常查询。


内容的提问来源于stack exchange,提问作者Babar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 18:18:05