rails中的json渲染问题

时间:2016-10-12 10:11:03

标签: ruby-on-rails json

我在user.rb中添加了以下代码。

def as_json(options={})
  h = super(:only => [:id, :content, :created_at, :updated_at])
  h
end

但是在另一个api我也必须得到用户名和地址。但是在渲染json时产生这四个字段。我怎样才能得到两个输出。提前致谢

2 个答案:

答案 0 :(得分:2)

让两个API成为

此API也应返回用户名和地址

def api1
  User.first.as_json(user_info: true)
end

这不需要返回用户名和地址

def api2
  User.first.as_json(user_info: false)
end

让user.rb成为

 class User < ApplicationRecord
   def as_json(options = {})

     if options[:user_info] == true
       user = super(:only => [:id, :content, :created_at, :updated_at, :username, :address])
     else 
       user = super(:only => [:id, :content, :created_at, :updated_at])
     end 
     user
   end 
end

答案 1 :(得分:0)

我没有更好的想法,但我认为您可以使用except之类的:

def as_json(options={})
  h = super(:only => [:id, :content, :created_at, :updated_at, :username, :address])
  h
end

然后在渲染时,您可以在不需要时使用@yourVariable.as_json(except: [:username, :address]),或者您可以使用only代替except