1

モデルの関連付けを、関連付けられたモデルの ID (int) の配列としてシリアル化しようとしています。現在、serializable_hash の :include オプションを次のように使用しています。

:include => {:associated => {:only => [:id]}

次のような出力json:

{"id":13, ...,"associated":[{"id":15,"associated":[]},{"id":14,"associated":[]}]}

関連付けられたオブジェクトに「関連付けられた」キーがある理由がわかりません。しかし、それはあまり重要ではありません。私が欲しいのは、次のような出力を得ることです:

{"id":13, "associated":[15,14]}

これを取得するにはどうすればよいですか?

4

2 に答える 2

1

モデルIDのみが必要な場合associatedは、親モデルに次のようなメソッドを作成してみてください:

class ParentModel < ActiveRecord::Base
  # ...

  def associated_ids
    associated.pluck(:id)
  end
end

次に、serializable_hashorto_jsonメソッドで次のようにします。

parent_model_instance.includes(:associated).serializable_hash(methods: [:associated_ids])

これを生成する必要があります:

{ "id": 13, "associated_ids": [15,14] }
于 2013-03-17T09:52:47.333 に答える