1

現在、特定の所有者のブログのすべての投稿にアクセスするための API を構築しています。Blog モデルの下にネストされた json として表示したいと思います。

class API < Grape::API
format :json
prefix "api"
resource "posts" do
  get ':id' do
    owner = Owner.find(params[:id])
    present owner.blogs.each do |b|
        present b
        b.posts.each do  |p|
            present p
        end
    end
  end
end
end

所有者には多くのブログがあり、さらに多くの投稿があると想定しても問題ありません。

ソース: https://github.com/intridea/grape

4

1 に答える 1

5

グレープエンティティの宝石が役立つかもしれません: https://github.com/intridea/grape-entity

これにより、モデルの「ネストされたエンティティ」を定義できます。

module YourApp
  module Entities
    class Blog < Grape::Entity
      expose :id, :blog_title
      expose :posts, using: YourApp::Entities::Post
    end

    class Post < Grape::Entity
      expose :id, :post_title
    end
  end
end

そして、エンドポイントで:

# ...
present owner.blogs, with: YourApp::Entities::Blog
# ...

これが役立つことを願っています。

于 2013-11-05T22:43:26.513 に答える