Rails: モデルオブジェクトの特定の属性を選んで to_hash/to_json

今、ある Rails アプリケーションの User モデルクラスに id, name, email, created_at, updated_at という5つの属性があるとします。id = 1 の User オブジェクトに関して、name と email だけの値をハッシュまたはJSON文字列として返すにはどうすればいいでしょうか。

答え:

(1) ハッシュ化


u = User.find(1)
u.attributes.slice('name', 'email')

(2) JSON


u = User.find(1)
u.attributes.slice('name', 'email').to_json


u.attributes.slice('name', 'email') の代わりに u.attributes.except('id', 'created_at', 'updated_at') としても構いません。多くの属性の中から少数の属性だけを省きたい場合は、こちらの方が便利です。