アウトプット11/8

<今日のカリキュラム>

・最終課題導入

 

<メソッド整理など>

・Rubocop

 rubyを自動調整してくれるツール

 

<分かっていなかったこと>

 

 

<理解していないこと>

・references型/外部キー制約

 中間テーブルのマイグレーションファイルに記述する。

 t.references :room, foreign_key: true
 t.references :user, foreign_key: true

・fill_inメソッド

・have_selector,have_contentの違い

 指定したセレクタがあるかないかを判断するマッチャがhave_selector。have_contentは指定した文字列があるかどうかを判断するマッチャ。

・sliceメソッドとslice!メソッド

 array.slice(1) →配列の中から1番目の数値を取り出す。但し配列に影響はない。

 array.slice!(1) →配列の中から1番目の数値を取り出す。取り出した数値は配列から削除される。

・afterメソッド 

 任意の処理の後に指定の処理を実行するメソッド。テストコードでFactoryBot後に画像を保存するコードを作るときなどに使用する。

・DOM

 ドキュメントオブジェクトモデルのこと。 HTMLを解析し、データを作成する仕組み。JavaScriptではHTMLを階層として捉えて変換したデータと捉え、そのHTMLの階層を取得し、操作することでプログラムを動かす言語。

XMLHttpRequest

 javascriptからAjaxによるリクエストを送るためのオブジェクトのこと。

・renderメソッド

 JSON形式でデータをサーバーから返却する際には、

 render json:{ post: post}

 とcreate定義に記載する。

・onload

 XMLHttpRequestで定義されているプロパティで、レスポンスの受信が成功した場合に呼び出されるイベントハンドラーのこと。

 ・セッションとクッキー

  webサービスにおいて情報を一時的に保存しておく仕組み。セッションがハッシュの形式でクッキーという保存場所に保存される。

・before_action

 コントローラーで処理が被っているときに使用する。具体的には、同じ記述を別のメソッドで定義し、アクションの実行前にbefore_actionを実行させることで記述内容の重複を避ける。

・テーブルにカラムを追加

 rails g migration Addカラム名Toテーブル名 追加するカラム型:型

・<em>タグ

 斜線で強調するタグ

・devise_parameter_sanitizerメソッド(2回目!)

 deviseにおけるparamsのようなもの。deviseGem時に自分で新しく設定したカラムもストロングパラメーターに含めることが可能(nicknameなど)。application_controller.rbに記載する。

・mergeメソッド(2回目!)

 ハッシュを結合させるメソッド。使い方は、投稿に関するハッシュとログインユーザーのハッシュを結合させて、投稿とユーザーを紐つけるときに使う。

・N+1問題(2回目!)

 アソシエーションによる該当箇所への複数アクセスが起こってしまう問題。解決策はincludesメソッドによる該当モデルの一括取得(コントローラーに「モデル名.includes(:紐付くモデル名)」と記述。)。

・case文

 ifを使わない条件分岐

case 対象のオブジェクトや式
when 値1
 # 値1に一致する場合に実行する処理
when 値2
 # 値2に一致する場合に実行する処理
else
 # どれにも一致しない場合に実行する処理
end

・whereメソッドとLIKE句

「c」が含まれるタイトルの検索方法は、

 where('title LIKE(?)', "%c%")

 検索機能の実装で使うメソッドでモデルに記述する。

・ルーティングのネスト(2回目!)

 あるモデルと紐ついている別のモデルのid情報をパラメーターに含めるためにネストさせる。

 resources :親となるコントローラー do
  resources :子となるコントローラー
 end

rails_12factor

 Herokuでデプロイする場合に必要。Gemfileに以下の記述を追加し、 bundle installする。
 group :production do
  gem 'rails_12factor'
 end

・heroku addons:add cleardb

 herokuのデフォルトデータベースはPostgreSQLというデータベースなのでMySQLに変更するため

<気付き>

昨日のオリジナルアプリが消えたのはショックだったけれど、おかげでフリマアプリ作成時にはGitHubをすごく注意して使えている。とりあえず今日はデプロイまで完了。

やっぱりオリジナルアプリの作成が力になっていると実感。今週も頑張ろう。