2016-09-09 5 views
1

作成したオブジェクトを定義済みのフィールドに制限したい。私はユーザーを作成した後、通常、後でそのオブジェクトを返します。しかし、私はあらかじめ定義されたフィールドを返すだけです。今、私はそれを好きです。作成後にレールのオブジェクト属性を事前定義キーに制限

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 

ただし、このコードはDRYでも堅牢(またはかなり)でもありません)。これはどうすればいいですか?

答えて

0

Userモデルにto_jsonメソッドを作成し、それをコントローラで使用します。

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

その他のオプションは、いくつかの(API)プレゼンターことが、この例では私には行き過ぎのように思えるでしょう。

ActiveModel::Serializerもご覧ください。

+0

よろしくお願いいたします。 – theDrifter

関連する問題