2013-03-13 1 views
5

除外:Railsのモデル、私はこのようになりますJSONレスポンスを形成しようとしています属性

{ 
    "user": { 
    "birthday": "2013-03-13", 
    "email": "[email protected]", 
    "id": 1, 
    "name": null, 
    "username": "example" 
    }, 
    "other_data": "foo" 
} 

私は、ユーザーを返したとき、私は

render :json => @user, :except => [:hashed_password, :created_at, :updated_at] 

を使用し、前にhashed_pa​​ssword、created_at、およびupdated_at属性の送信を抑止します。これを行う方法はありますか?また、ユーザーと一緒に追加のデータを送信することもできますか?今は、ハッシュに送る属性を1つずつ追加するだけですが、これは明らかに理想的ではありません。

答えて

15

は、最初のJSONデータをレンダリング自動的にルビーのハッシュを返し、モデル、上の「as_json」を呼び出します。その後、あなたのハッシュの文字列表現を得るために 'to_json'が呼び出されます。あなたが望むものを達成するために

、あなたはこのような何かを呼び出すことができます。この場合

render :json => { 
    :user => @user.as_json(:except => [:hashed_password]), 
    :some_other_data => {} 
} 

を、そこに「as_json」への応答問わないので、コントローラは自分をオンにする「to_jsonを」呼び出しますハッシュを文字列に変換します。

+0

正確に私が探していたもの、ありがとう –

関連する問題