0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?