在Rails响应中更改JSON字段名称

时间:2016-04-12 20:58:00

标签: ruby-on-rails ruby json

我需要允许每个帐户自定义json输出。一个人可能喜欢标准的json响应。另一个人可能希望拥有完全相同的饲料,除非他们需要"名称"字段名为" account_name"什么的。

因此,对于标准用户,他们可能会对

感到满意
@model.to_json(only: [:name, :title, :phone])

另一位用户可能希望将他们的json响应视为

@model.to_json(only: [:name (AS ACCOUNT_NAME) , :title, :phone])

我找到了覆盖模型中as_json / to_json的解决方案,但这些解决方案似乎是影响每个人的解决方案。如何根据每个访问/每个帐户更改它们?

1 个答案:

答案 0 :(得分:2)

我认为在您的情况下,最好将逻辑推送到view图层,以便使用Jbuilder清除代码。 因此,您可以执行以下操作,而不是覆盖to_json方法:

# app/views/users/show.json.jbuilder

json.model_name do
  json.title @current_user.title
  json.phone @current_user.phone
  if current_user.type_account_name?  # need to implement this logic somewhere in your app
    json.account_name @current_user.name
  else
    json.name @current_user.name
  end
end

更新

控制器看起来像这样

class UsersController < ApplicationController
  def show
    @user = User.find(params[:id])
  end
end