2021-04-01から1ヶ月間の記事一覧

エラーメッセージのパーシャル作成

ユーザーの新規登録や掲示板の作成時に、「○○を入力してください」というフラッシュメッセージを表示したいが、複数のビュー画面で表記したい。 効率的に表記するためにパーシャルを作成する。 すでにモデルにバリデーションは記載してあるので、続きからの…

掲示板(作成機能)

サイトに登録している人がboardを作成できるよう機能を作る。 ①ビュー側から入力された情報を保存する app/controllers/boards_controller.rb のcreateに以下のように定義する。 def create @board = current_user.boards.new(board_params) if @board.save …

ストロングパラメーター(復習)

①ストロングパラメーターとは web上から入力されるパラメーターが安全なものか検証し、取得する仕組み。 メソッドに受け付けるカラム名(id,name等列にあたる部分)を事前に指定しておく。 指定されていないカラムデータが送られてきた場合、弾くことができる…

n+1問題(確認方法)

今回調べた限りでは2パターンあるよう。 ①rails s をしてサーバーを立ち上げてコンソールで確認するパターン。 パッと見でもN+1問題が起こっていると、明らかに分量が多いのでわかる。 ②Gemファイルを導入して確かめる方法 bulletというgemファイルを導入す…

外部キー制約

<外部キー制約とは> データベース側の項目に付ける制限 好きに値を入れられないようになっており、別テーブルの項目から値を選んで入れるように指定する。 今回の場合はuserテーブルとboardテーブルが依存関係にある。 FOREIGN KEY 制約の設定は子テーブル側…

i18nを用いた時間表記(日本時間)

掲示板の投稿時刻を日本時間で表示するため、i18nを用いる。 以前、i18nは導入済みなため、日本時間を表示するための手順のみ記載する。 <手順> ♡ya.ymlに必要事項を記載する ♡表記したいページに埋め込む ♡config/locales/application.rbに日本時間の設定を…

N+1問題の解決

N+1問題とは N+1問題は解決すれば、1回のアクセスで取ってこられるデータを何度もアクセスして取ってくる、非効率的な状態。 今回の課題では、1人のuserに対し、複数の投稿(今回はboard)があるため、1人のuserの投稿を一気に複数取ってくることで、デー…

Fakerを用いたダミーデータの作成

掲示板一覧を作成するにあったって、ダミーデータを使用するため。 大まかな流れ ♡Fakerを導入 ♡db/seedsに内容を記載 ♡DBをリセット、作成 ①Fakerのインストール Gemfileに gem 'faker' を記載し、bundle installする。 ②db/seedsに内容を記載 20.times do …

掲示板の一覧機能のモデル作成・編集

<大まかな流れ> ♡モデルファイルの作成 ♡モデルファイルの中身の編集 ♡親モデル、子モデルを結びつける ♡モデルに記載するRails側の制限を記載する ①モデルファイルを作成する rails g model Board title:string body:text でmodel下にborad.rbファイルを…

iT用語集

知らないIT用語が飛び交っているので、メモとして残します。 ♡ラップする、ラッピング あるクラスの関数、データ型などが提供する機能やデータを含み、別の形で提供すること。 用意されたクラスや関数を「ラッパー」(wrapper)という。 参考文献:ラップ(ラ…

decoratorの導入

今回はfirst_nameとlast_nameを用いて、フルネームを表記したいため、 full_nameを定義していく。 <decoratorとは> ・機能を少し付け加えたい場合や、装飾を少し加えたい場合に用いる。 →全てモデルに書いてしまうとファットになってしまう。 →decoratorを…

フラッシュメッセージの実装

<やること> ・ログイン、ログイン失敗、ログアウトのフラッシュメッセージの実装方法。 ・フラッシュメッセージの表示を viewに追加する際、パーシャルを用いる。 ①コントローラー全体にフラッシュメッセージの定義をする。 app/controllers/application_c…

i18nの導入

ボタンやメッセージはデフォルトで英語なので日本語にするために導入。 今回はviewに適用していく場合。 <手順> ①Gemfileにi18nを記載してbundle installする gem 'rails-i18n', '~> 5.○.○' ○部分はバージョン ②config/application.rbに config.i18n.default…

rake db:migrateでエラーが生じる

rake db:migrateをしたところ現在使用しているrakeが合わなかったため、バージョンを変更した。 rake db:migrate を実行すると rake aborted! Gem::LoadError: You have already activated rake 13.0.3, but your Gemfile requires rake 12.3.3. 現在、用い…

Cookieとセッションとその関係性

HTTPの性質はステートレス <ステートレス> ・情報を保持し続けることができないため、リクエストごとに情報がリセットされてしまう。 ・状態を維持することができない。 1回目でのやりとりが2回目には忘れられてしまう。 →Cookieやセッションが必要にな…

bootstrapとfont-awesomeの導入

今回、Railsはver5.○.○を使っており、gemを用いて ・bootstrapはver4.○.○ ・font-awesomeはver5.○.○ を導入する。 前提として、app/assets/stylesheets/application.cssはapplication.scssへファイル名を変更しておく。 ♡bootstrap ・HTML、CSS、JavaScript…