基本的な構成や手順は後で。とりあえずつまったところをメモ。
こんなModelで
class Post < ActiveRecord::Base
has_many :post_relationships
has_many :categories, through: :post_relationships
validates :name, presence: true
accepts_nested_attributes_for :categories
end
class PostRelationship < ActiveRecord::Base
belongs_to :post
belongs_to :category
end
class Category < ActiveRecord::Base
has_many :post_relationships
has_many :posts, through: :post_relationships
end
##上記のようなモデルで多対多のリレーションを含めた形で結果を返す
# api.py
module API
class Base < Grape::API
prefix 'api'
version 'v1', using: :path
format :json
mount Post_API
end
end
# post_api.py
class Post_API < Grape::API
resource :posts do
# http://localhost:3000/api/v1/posts
get do
# Post.all() ←これだとカテゴリーの中身が返らない。
# これでカテゴリー含めて返る
Post.all()as_json(include: :categories)
end
# http://localhost:3000/api/v1/posts/1
get ':id' do
Post.find(params[:id])
end
end
end