4

我有一个帖子资源和一个用户评级资源。

在我的routes.rb中,我将用户评分嵌套在帖子中:

jsonapi_resources :posts do
  jsonapi_resources :user_ratings
end

这已经正确地暴露了端点/posts/{id}/user-ratings

但是,当使用 测试此端点时{id},它会返回 all user-ratings,而不仅仅是user-ratings与该帖子 ID 相关联。

在我的帖子资源中,我尝试添加:has_many :user_ratings,在用户评分中我尝试添加:has_one :post

在我的模型中,我添加了has_manybelongs_to

然而,我没有尝试过让 api 只返回与特定帖子 ID 关联的用户评分。

任何见解将不胜感激,谢谢。

4

3 回答 3

3

在 routes.rb 中有相关资源的特殊构造:

jsonapi_resources :posts do
  jsonapi_related_resources :user_ratings
end

帖子资源应该有

has_many :user_ratings

它将添加路由 /posts/{id}/user_ratings 并且评级将通过 post 资源获取,您还可以在那里覆盖 records_for_* 方法以获得更多控制:

def records_for_user_ratings
   super.published
end
于 2017-05-05T14:22:38.030 回答
1

UserRating模型中尝试has_one :issue

user_ratings在 routes.rb中,不需要嵌套posts

当你运行rake routes你应该看到嵌套posts\:post_id\user_ratings即使在 routes.rb 它没有被指定为嵌套

于 2016-04-26T23:53:57.273 回答
-4

确保控制器的 index 操作使用该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

希望有帮助。

于 2017-03-05T09:44:00.873 回答