LoginSignup
0
0

More than 1 year has passed since last update.

[初心者log]Rails(API)で複数のデータを結合してjson形式で返す

Posted at

本記事の目的

Rails(API)+Reactで開発をしているとき、投稿にユーザーネームの添付に手こずったので、
今回はPost(投稿)コントローラのindexにおいてUser情報も加え、必要なものを返却する方法を調べたのでまとめておきます。

UserテーブルとPostテーブル

users_posts_table.png

必要な情報を結合して返却したい

app/controller/post_controller.rb
class PostsController < ApplicationController
  def index
    posts = User.joins(:posts).select('posts.id, title, body, name AS user')

    render json: { data: posts }
  end
end

joinsメソッドとselectメソッド

joinメソッド

joinsメソッドは2つのテーブルを内部結合することができるメソッドです。

User.joins(:posts)

joinsメソッドを使って、usersテーブルとpostsテーブルを内部結合させます。

selectメソッド

内部結合させたあとに、selectメソッドを使って、必要なカラムを指定して取得します。

.select('posts.id, title, body, name AS user')
  • ここでposts.idとなっているのは、テーブル同士でカラム名が重複している場合、テーブルを指定してidを取得しています。titleやbodyなどの重複していないカラムはそのまま指定することができます。

  • name AS userとしているのは、usersテーブルのnameカラム名を表示用にuserと変更しています。postsテーブルのカラムと一緒に返却しているためnameだと分かりづらいためuserに変更しています。


参照:Rails API - 複数テーブル(親子テーブル)を結合して必要なカラムだけをJSONで返却したい

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0