2016-11-26 4 views
0

フィーチャプロダクトウィッチには2つのカラム(product_id、position)しか含まれていません。私のGET/featured_productsで 、私はこのアクティブモデルシリアライザ、キーのないレンダリングアソシエーション

[ 
    { "name":"Product 1" } 
    { "name":"product 2" } 
] 

のようなものをレンダリングしたいしかし、その代わりに、私は論理的にこれを取得:アクティブなモデルシリアライザのドキュメントに続き

[ 
    "product":{ "name":"Product 1" } 
    "product":{ "name":"product 2" } 
] 

を、I'vはこれらを試してみました私featured_productシリアライザクラス:

embed_in_root: true 

belongs_to :product, embed_in_root: true 

最初にオンにするとエラーが発生し、2番目にJSONが変更されることはありません。

アクティブモデルシリアライザのドキュメントで回答が見つからなかった場合、または回答が他の場所にある場合は私自身で解決することはできませんでしたここでいくつかアドバイスをしてください。私は私の特定のケースのために仕事をして解決策を見つけた

おかげで[OK]を

答えて

0

また、これを試すことができます。

render json: FeaturedProduct.includes(:product).order(:position).map(&:product) # include :product to avoid N + 1 queries on products 
+0

を試してみて、それは私の特定のケースのために働きます。好奇心のために、私のJSONに製品を「インクルード」しながら、FeaturedProductSerializerでそれをシリアル化して他のもの(私の場合はPositionのようなもの)を組み込むことはありますか? – Sonastra

0

features_productごとに関連商品を表示したいので、レンダリングコールでこれをマッピングしました。

つまりは、私はその

render json: FeaturedProduct.all.order(:position).map(&:product) 

への

render json: FeaturedProduct.all.order(:position) 

からこの道を行き、製品のシリアライザはFeaturedProductから1と呼ばれていません。

0

はここでも

render json: @products, root: false 
関連する問題