掲示板の一覧機能の作成(アソシエーション)

どうもどハマりエンジニアです。

本日は掲示板の一覧機能を実装!

 

 

本日の行ったことをまとめるよ!

 

Boardモデルを作成したら、Userモデルと関連付を行う。(アソシエーション)

belongs_to :user
validates :title, presence: true, length: { maximum: 255 }
validates :body, presence: true, length: { maximum: 65_535 }

 

has_many :boards, dependent: :destroy

 

Boardsコントローラにてindexアクションを作成

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

※includesをつけることでn+1問題が起こらないようにする。

 

index.html.erb

<%= render @boards %>

_board.html.erb

<div class="col-sm-12 col-lg-4 mb-3">
<div id="board-id-<%= board.id %>">
<div class="card">
<%= image_tag 'board_placeholder.png', class: 'card-img-top', size: '300x200' %>
<div class="card-body">
<h4 class="card-title">
<a href="#">
<%= board.title %>
下記に続く・・・

 

application_controller.rb

class ApplicationController < ActionController::Base
add_flash_types :success, :info, :warning, :danger
before_action :require_login

def not_authenticated
redirect_to login_url, danger: 'ログインしてください'
end
end

※sorceryのメソッドを使ってログインをしているかの確認

各コントローラではskip_before_actionを追加している。

 

その他にも

時刻フォーマットをi18nを使って整形

seeds.rbファイルを作成してBoardモデルのダミーデータを20個作り、事前にDBにインサート。ダミーデータには Faker を利用。