掲示板の一覧機能の実装

まずBoardモデルを作成(Userモデルと紐付けるため外部キーを保存できるカラムを設定する)

rails g model Board title:string body:text user:references

rails db:migrate

これでuser_idを保存できるカラムをもったBoardテーブルができました。

 

アソシエーションの設定

Board.rb belongs_to :user

Boardは1つのUserに属しているのでbelongs_to :user(単数形)

 

User.rb has_many :boards, dependent: :destroy

Userは複数のBoardを持っているのでhas_many :boards(複数形)

dependent: :destroy

Userモデルが削除された際に紐付いているBoardも削除する

 

次にバリデーションの設定

validates :title, presence: true, length:{ maximum: 100 }

validates :body, presence: true, length:{ maximum: 100 }

presence 空でないか検証

length:{ maximum: 100 } 値の長さの検証

 

コントローラーの作成

rails g controller boards

class BoardsController < ApplicationController
def index
@boards = Board.all.includes(:user).order(created_at: :desc)
end
end

boards_controllerにindexアクションを作成して上のように取得する

@boardsを取得する際にincludesメソッドをする

includesメソッドを使用する理由はN+1問題を解消するため

 

あとはビューを作れば完成です!