11

次のようなjsonレスポンスを作成しようとしています:

{
  "user": {
    "birthday": "2013-03-13",
    "email": "example@example",
    "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 つずつ追加しているだけですが、これは明らかに理想的ではありません。

4

2 に答える 2

30

json データをレンダリングすると、最初にモデルで「as_json」が自動的に呼び出され、ルビー ハッシュが返されます。その後、ハッシュの文字列表現を取得するために「to_json」が呼び出されます。

あなたが望むものを達成するために、次のようなものを呼び出すことができます:

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

この場合、「as_json」に応答するオブジェクトがないため、コントローラーは単に「to_json」を呼び出してハッシュを文字列に変換します。

于 2013-03-13T22:26:43.577 に答える
0

この宝石を使用することをお勧めします: https://github.com/fabrik42/acts_as_api

于 2013-03-13T22:21:44.787 に答える