如何在Ruby On Rails中始终为单个结果返回JSON数组?

时间:2018-12-09 12:39:51

标签: ruby-on-rails json ruby

始终从Ruby On Rails的API控制器返回JSON数组的最简单或预期的方法是什么?

假设我执行以下控制器操作:

def index
  render json: Entry.all.includes(:user).to_json(include: :user) if current_user.has_role?(:administrator)
  render json: Entry.find_by(user: current_user).to_json(include: :user)
end

返回条目列表。有时结果只是一个条目,因此to_json()不会创建JSON数组,而是创建JSON对象。

这使诸如API文档和客户端实现之类的一切变得复杂,因为我们必须测试空结果,单个结果和数组结果。

如何总是在这里返回JSON数组?

堆栈:Ruby 2.5.3; Rails 5.2.2

1 个答案:

答案 0 :(得分:3)

尝试更改此内容

render json: Entry.find_by(user: current_user).to_json(include: :user)

render json: Entry.where(user: current_user).to_json(include: :user)

find_by返回一个对象,而whereActiveRecord::Relation