创建后,将rails中的对象属性限制为预定义键

时间:2016-09-09 09:17:54

标签: ruby-on-rails-4

我想将创建的对象限制为预定义字段。创建用户后,我通常会在以后返回该对象。但我想只返回预定义的字段。现在我这样做。

u = User.create(name:"foo", address:"bar", encrypted_password:"secure_pw") 

# render json: u.attributes.except('created_at','updated_at', 'encrypted_password'), status:200
render json: u.attributes.slice('name','address'), status:200

但是这段代码既不干也不健壮(或漂亮;))。我怎么能写得更好呢?

1 个答案:

答案 0 :(得分:0)

to_json模型中创建User方法并在控制器中使用它。

def to_json
  {
    name:    name,
    address: address
  }
end

其他选项可能是某些(API)Presenter,但在这个例子中对我来说似乎有些过分。

您还可以查看ActiveModel::Serializer