Rails APIで以下の3つのテーブルを結合してデータを取得する方法がわからないためご質問させて頂きます。
【Departmentsテーブル】has_many :users
name
【Usersテーブル】has_many :posts, belongs_to :department
name
department_id
【Postsテーブル】belongs_to :user
title
user_id
上記のようなテーブルを結合させて、フロント側では以下のようなフォーマットで取得したいと考えております。
{ title: '営業部山田の記事', user: { name: '山田', department: { name: '営業部' } } }
現状のpost_controller.rb
は次のようになっておりapi/v1/posts/:posts_id/users
にアクセスしたらUsersテーブルとPostsテーブルを結合した結果が取得できています。
これにUsersテーブルが参照しているDepartmentsテーブルのname
の値も合わせたい場合、何かいい方法はございますでしょうか?
Postsテーブルにdepartments_idを加えてデータを取得する方法も考えましたが、システムの設計上上記のような形でデータを取得したいと思っております。
rb
1# post_controller.rb 2module Api 3 module V1 4 class PostsController < ApiController 5 6 def index 7 posts = Post.where(user_id: params[:user_id]) 8 render json: { data: posts.as_json(:include => [:user])} 9 end 10 end 11end
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。