首页 > 解决方案 > Rails [Grape::API] 使用错误时如何包含元对象!方法?

问题描述

我正在使用Grape::APIgem 来构建 API 和响应。

我想出了一种在使用方法meta响应时将对象添加到响应主体的present方法。它是这样的:

present meta: { key: "value" }
present user, with: UserEntity

但是,当我想meta使用这个添加有错误的对象时:

present meta: { key: "value" }
error!("Error message", 422)

我没有meta在响应正文中得到对象。如何添加meta对象?


PS:目前我已经定义了一个hack-ish方法:

def present_error(message, status_code, meta: nil)
  body = {}
  body[:errors] = [{ title: message }]
  body[:meta] = meta if meta

  status status_code
  present body
end

标签: ruby-on-railsrubygrapegrape-api

解决方案


我认为没有像present这里那样好的解决方案。

你能做的最好的可能是:

error!({ error: "Error message", meta: meta }, 422)

推荐阅读