我正在Ruby on Rails中编写一个简单的API,我希望能够自动隐藏列不可见,例如,如果我想选择用户,我从不想共享密码,盐或任何其他个人信息。< / p>
在Laravel中,您可以使用受保护的变量'$ guarded',我想知道这是否可以在Rails中使用?
编辑:我正在使用JSON来显示数据。
答案 0 :(得分:1)
您通常会使用序列化程序,您可以准确指定要在响应中使用的列。
我认为https://github.com/rails/jbuilder现在是默认值,但还有其他如:
https://github.com/nesquena/rabl
https://github.com/rails-api/active_model_serializers
假设你的api是JSON api。
您也可以像这样使用as_json
。
def show
@resource.as_json(only: [:id, :name])
end
答案 1 :(得分:0)
如果您正在构建API端点,则可以执行以下操作: 在您的控制器中:
@user = User.find(params[:id]).to_api_json
在你的用户类中,在哈希中返回你想要的东西:
def to_api_json
{ "id": id, "email": email } # add whatever attributes you want to this hash
end
您可以根据要返回的数据格式进行调整,但这是基本想法。