パスワードリセット機能の実装
パスワードをリセットするためにモジュールをインストール
rails g sorcery:install reset_password --only-submodules
作成されるマイグレーションファイル
マイグレーションファイルを反映
rake db:migrate
メイラーの作成
rails g mailer UserMailer reset_password_email
app/mailers/user_mailer.rbを修正
パスワードリセット用のメイラーを指定
コントローラーの作成
rails g controller PasswordResets create edit update
ルーティングを追加
メイラービューの設定
reset_password_email.html.erb
reset_password_email.text.erb
パスワードリセット用のフォームの作成
letter_opener_webを追加する
bundle installする
ルーティングを追加
mount LetterOpenerWeb::Engine, at: '/letter_opener' if Rails.env.development?
config/environments/development.rb
環境ごとに異なる定数を管理できるgemをインストール
bundle installする
設定ファイルの生成
rails g config:install
config/settings/development.yml
プロフィール編集機能の実装
profiles_controllerの作成
rails g controller profiles
profiles_controllerにアクションを追加する
ビューの設定
ルーティングの設定
掲示板の検索機能を実装
Gemfileに追記
gem 'ransack'
bundle installする
コントローラーへ検索機能を追加する
ビューに検索フォームを追加する
f.search_fieldの:title_or_body_contを変更することで検索する内容を変更できる
(例 :title_cont, :body_cont)
パーシャルを使用する場合
<%= search_form_for q, url: url do |f|%>
renderする
<%= render 'ファイル名', q: @q, url: boards_path %>
掲示板のページネーション
Gemfileに追記
gem 'kaminari'
bundle installする
コントローラーの変更
kaminariで用意されている.page(params[:page])を使うことで簡単に使うことができる。
デフォルトで1ページで表示されるのは25件になっている
ビューに表示する
bootstrapを使ってデザインを変更する
rails g kaminari:views bootstrap4
表示件数を変更する
rails g kaminari:config
数字の部分を変更すれば表示件数が変わる
ブックマーク機能の追加
Bookmarkモデルの作成
rails g model Bookmark user:references board:references
rails db:migrateをする
(add_index :bookmarks, [:user_id, :board_id), unique: trueで同じユーザーが複数回ブックマークすることを防ぐ)
バリデーションの設定
バリデーションは上のように設定します。
user_idとboard_idの組み合わせが一意であるようにするため。
1つの掲示板につきuserは1回のみブックマークできるようにするため
アソシエーション
user.rb
board.rb
ブックマーク機能
user.rb
bookmark? ブックマークされているか?
bookmark ブックマークする
unbookmark ブックマークを外す
コントローラーの作成
rails g controller bookmarks
redirect_backを使うと直前のページへ戻る
boards_controllerにbookmarksアクションを追加
ルーティングの設定
resourcesで定義された7つのアクション以外のアクションを定義するときにcollectionを使う
/boards/bookmarksになる
ボタン作成
お気に入りボタン
お気に入り解除ボタン
ボタンの判定
お気に入り一覧画面の作成
掲示板の編集、削除機能の実装
boards_controllerに追加(edit update destroy set_board)
edit,update,destroyアクションはURLから他の人の掲示板を編集できないようにするためset_boardで対象のユーザーの掲示板のみ取得できるようにする
current_userと掲示板を作ったuserが一緒かどうか確認
編集ボタン、削除ボタンの作成
編集ボタン、削除ボタンが必要な場所に記述
タイトルを動的に出力する
helpers/application_helpers.rb
各ページのviewの先頭に追加