我在user.rb中添加了以下代码。
def as_json(options={})
h = super(:only => [:id, :content, :created_at, :updated_at])
h
end
但是在另一个api我也必须得到用户名和地址。但是在渲染json时产生这四个字段。我怎样才能得到两个输出。提前致谢
答案 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