掲示板にコメント機能を実装する①Commentモデルの作成と他モデルの関連付け
掲示板にコメントを書き込めるように実装する
書き込んだコメントは、同じページの下部に更新順に表示される
コメントを削除・編集できるのは、コメントした本人だけに制限する(今回はビュー側の設定まで)
コメント機能を実装するために必要な作業
とりあえず、ざっくりと書き出してみる
Commentモデルと他モデル(User, Board)への関連付け
ルーティング設定
comments_controllerの作成とboards_controllerへの追記(掲示板詳細ページにコメントを表示したいので、showアクションへ追記)
コメントを作成した人だけが、削除・編集アイコンを見られるようにする。
Commentモデルの作成と関連付け
UserとBoardモデルに関連を持たせたいので、references
で指定しておく。
$ rails g model Comment body:text user:references board:references
class CreateComments < ActiveRecord::Migration[5.2] def change create_table :comments do |t| t.text :body, limit: 65535, null: false t.references :user, foreign_key: true t.references :board, foreign_key: true t.timestamps end end end
外部キーあることを確認
文字数制限を付けたいので、
limit: 65535
追加空で登録できないように、
null: false
追加
内容がOKだったら、$ rails db:migrate
各モデルに関連付けしていく
まず、Commentモデルに追記
rails generateしたときに、references
で設定したので、自動でbelongs_to :user
belongs_to :board
が設定されている。
空が登録できないようにする&文字数制限も追記。
class Comment < ApplicationRecord belongs_to :user belongs_to :board validates :body, presence: true, length: { maximum: 65_535 } end
Userモデル、 Boardモデルにそれぞれ、以下を追記する。
has_many :comments, dependent: :destroy
参考 Active Record の関連付け - Railsガイド
次回以降も進めていく。