我需要允许每个帐户自定义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的解决方案,但这些解决方案似乎是影响每个人的解决方案。如何根据每个访问/每个帐户更改它们?
答案 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