コードレビューで学ぶRuby on Rails 読書メモ
書籍の内容がそのまま伝わらならないように、実際のコード及びコードは掲載しません。
https://scrapbox.io/files/64d30c76b51859001c528499.png
model
HogeFugaだと構造を示せているが、関係を示せてはいないので良くない
関係を表すモデル名を考えましょう
初めて知った
デフォルト
code: gpt
マイグレーションファイル内の default オプション:
データベースレベルでのデフォルト値を設定します。
新しいレコードがデータベースに保存されるとき、指定されたカラムにデフォルト値が自動的にセットされます(ユーザーが値を提供していない場合)。
このデフォルト値は、データベースのスキーマやSQLスキーマダンプに明示的に保存されます。
モデル内の attribute メソッド:
アプリケーションレベルでのデフォルト値を設定します。
新しいモデルインスタンスが作成されるときに、デフォルト値がセットされますが、この値はデータベースに保存されるまでの間だけ存在するものです。
このデフォルト値は、データベースのスキーマには保存されません。
既存レコードの読み出しの際、列挙型に含まれない場合、すべてデフォルト値になる恐れがあるので注意。
マイグレーションファイル内の参照に注意
transactionの中で例外を投げるとロールバックされる
関連するモデルでnew→buildを実行した後にsaveすると、自動的にtransaction処理になる
newとbuildを合わせる感じ
view
strftimeで日付指定をすると、修正漏れが発生する可能性がある
I18n.localeを使用する
controller
allの取得は順番が保障されないよね
orderつけよう
また、常に全体から取得する必要があるのかも考える
スコープは小さく
Breakman
セキュリティのチェックをしてくれるgem
認証処理
全部application_controllerに突っ込まずに、必要なnamespaceを切って、ディレクトリ分けて作ったっていい
!で例外が飛ぶのをあらためて意識せよ
test
インスタンスメソッドは#、クラスメソッドは.という慣習がある
describeはシンプルにテスト対象
contextで場合
itで内容
FactoryBotの方じゃなくて期待値はコード上に
確かにそうだ〜
データテストIDというものがある
明示的に許可されていないパラメータが見つかった場合にログ出力または例外発生を行なうかどうかを指定します。test環境とdevelopment環境でのデフォルト値は:logであり、それ以外の環境ではfalseが設定されます。以下の値を指定できます。
読了
素晴らしい本でした。