从模型中排除列

时间:2015-08-12 17:06:35

标签: ruby-on-rails ruby ruby-on-rails-4 rails-activerecord

我正在Ruby on Rails中编写一个简单的API,我希望能够自动隐藏列不可见,例如,如果我想选择用户,我从不想共享密码,盐或任何其他个人信息。< / p>

在Laravel中,您可以使用受保护的变量'$ guarded',我想知道这是否可以在Rails中使用?

编辑:我正在使用JSON来显示数据。

2 个答案:

答案 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

您可以根据要返回的数据格式进行调整,但这是基本想法。