改变rails中的JSON响应?

时间:2016-07-06 04:41:31

标签: ruby-on-rails json rendering response

我有一个名为用户的模型,在许多操作中,我将响应呈现为json。为了显示用户数据,我正在使用

@user = User.find_by_id(params[:id]) render json: {data: @user}

现在我要求在响应用户数据时,我只需要显示手机号码的最后2位数,例如******** 78,有没有办法实现这一点,因为改变了响应在每个动作中都会太困难,所以有没有办法编写处理这种情况的常用方法。

2 个答案:

答案 0 :(得分:2)

您可以在user模型中编写方法

user.rb

def as_json(options = {})
  # use options as per need
  {id: self.id, name: self.name, mobile: mask}
end

def mask
  # masking logic
end

您可以编写一个掩盖初始字符的方法并执行render json: {data: @user.as_json)}

结帐this链接

答案 1 :(得分:0)

最后我通过

解决了问题
 render json: {data: @user.as_json}

当我打电话

{
    “id”: 143,
    “email”:test1@test.com,
    “mobile_number”: “********67”
}

即使@user可以包含记录集合,每条记录的手机号码也会以******** 78格式呈现。

现在回复

{{1}}

感谢benchwarmer's帮助。