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

Rails-API项目中如何对Active Storage功能进行测试?

无需视图的请求方案(直接调用接口即可)

你之前的操作报错大概率是因为混用了JSON请求格式和文件上传逻辑:application/json类型的请求体无法承载二进制文件内容,必须用multipart/form-data格式才能同时传输结构化数据和文件。

方案1:Postman 配置请求

  • 选中对应请求,请求方法匹配你Rails接口的设置(通常是POST/PUT)
  • 进入「Body」标签页,选择form-data类型
  • 配置文件字段:key填写Rails接口约定的附件参数名(比如avatar),hover到key输入框右侧的下拉菜单选择File类型,再在value列选择本地测试文件
  • 配置JSON结构化数据:
    • 如果结构简单(顶层或浅嵌套),直接按Rails参数约定拆分填写即可,比如要传{"user": {"name": "test", "age": 18}},就分别添加key为user[name]、value为test,key为user[age]、value为18的键值对,Rails会自动解析为嵌套哈希
    • 如果结构复杂不想拆分,可以新增一个key为payload,value粘贴完整JSON字符串,之后在Rails控制器里手动解析即可:@data = JSON.parse(params[:payload])
  • 无需手动修改Headers里的Content-Type,Postman会自动生成带边界标识的multipart/form-data请求头,手动填写反而容易导致解析失败

方案2:curl 命令行请求(无需打开Postman)

直接在终端执行命令即可,示例如下:

# 简单参数场景
curl -X POST http://你的Rails接口地址/路由 \
  -F "avatar=@/本地文件的完整路径.png" \
  -F "user[name]=测试账号" \
  -F "user[age]=22"

复杂JSON结构场景:

curl -X POST http://你的Rails接口地址/路由 \
  -F "avatar=@/本地文件的完整路径.png" \
  -F "payload='{\"user\": {\"name\": \"测试账号\", \"tags\": [\"管理员\", \"VIP\"]}}';type=application/json"

Rails侧配置注意事项

只要在对应控制器的强参数里放行附件字段即可,比如User模型绑定了has_one_attached :avatar,强参数写法如下:

def user_params
  params.require(:user).permit(:name, :age, :avatar)
end

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:24:02