2016-04-15 10 views
4

私はPostsリソースとUser Ratingリソースを持っています。私routes.rbjsonapi-resorces gemを使ってネストされたリソースを実装する方法はありますか?

、私は記事内のユーザー評価を入れ子になっています

jsonapi_resources :posts do 
    jsonapi_resources :user_ratings 
end 

これは正しく、エンドポイント/posts/{id}/user-ratingsを公開しました。 {id}と、このエンドポイントをテストするとき

しかし、それはすべてのuser-ratingsを返しているだけでなく、そのポストIDに関連付けられたuser-ratings

私の投稿のリソースに、私は追加しようとしました:has_many :user_ratings、ユーザー評価では、私は追加しようとしました:has_one :post

私のモデルでは、has_manybelongs_toを追加しました。

私が試したことはありませんが、apiは特定の投稿IDに関連付けられたユーザー評価だけを返します。

洞察力があれば幸いです。ありがとうございます。 UserRatingモデルで

答えて

1

はroutes.rbをでhas_one :issue

を試してみてください、あなたはrake routesを実行すると、あなたがそのをroutes.rbをしていてもposts\:post_id\user_ratingsを入れ子に表示されるはずですposts

に巣user_ratingsする必要はありません入れ子として指定されていません

-3

コントローラーのインデックスアクションでpost_idパラメーターを使用してuser_ratingsをフィルターしていることを確認してください。例:

# GET /user_ratings 
    def index 
     @post = Post.find(params[:post_id]) 
     @user_ratings = @post.user_ratings 

     render json: @user_ratings 
    end 

+0

注:OPはjsonapi-resources gemを使用しています。これは伝統的なレールコントローラの代わりです。 –

2

関連リソースのための特別な工事はroutes.rbをして、あります:

jsonapi_resources :posts do 
    jsonapi_related_resources :user_ratings 
end 

ポスト資源が

has_many :user_ratings 

を持つべきであることは、ルート/記事/ {ID}/user_ratingsと評価が追加されますポストリソースを介して取得されます、あなたはまた、より制御を得るためにそこにrecords_for_ *メソッドをオーバーライドすることができます:

関連する問題