rails-tutorial6章前編アウトプット

・モデルって主にどんな役割があるの?
   コントローラから受け取った命令に対して、データベースへアクセスして情報を取得したり、
また新たに情報をデータベースに
   書き込んだりする    ※だけどデータベースはrailsは全く違うもの、railsが日本人だとすればデータベースは外国人、
   当然使われる言語が全然違う!! 
   よってモデルの指示をデータベースに分かりやすく通訳してくれる役割の人や便利な機能が必要
   → それがActive Record!!
・データベースにテーブルを追加する時に使うのが、マイグレーションという仕組み
   データベースのスキーマへの変更をrubyのコードで実現できる
   rails db:migrate でデータベースの変更を実行
   rails db:rollback でデータベースの状態を一つ前の状態に戻すことができる
マイグレーションファイルが1つのバージョンとして扱われている)
・findメソッドとfind_byメソッドの違い
   find ... idをキーとしてデータを取得(id以外は取得不可
         対応するデータがない場合ActiveRecord::RecordNotFound(エラー)を返す
   find_by ... id以外の情報でもデータを取得できる
           返ってくるデータは最初にヒットした1件のみ
           該当するデータがない場合はnilが返ってくる
・Validation(検証)とは?
   Active Recordが持つ機能、モデルで追加されるデータの存在性(空であるか)、長さは適切であるか、
一意性であるか などをチェックしてくれる仕組み
   基本的な流れは「モデルオブジェクトをデータベースに登録や更新する前に検証を行い、エラーがあれば、
   登録、更新しない で差し戻す」
   上記の仕組みに対応するのがsaveメソッド、登録、更新前に検証してエラーが発生すればfalseを返す
   save!メソッドは検証エラーがあった場合falseではなく例外を発生させるメソッド
・メールアドレスが適切であるか(フォーマット)の検証
   formatオプションを使う  ex) validates :email, format: { with: }
   このオプションは引数に正規表現(Regular Expression)をとる
   この正規表現難しいのでよく使われる形で

VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/I

というのがある
   ただ、これだと..の連続のドットに対応できないらしい、よってそれすら対応したのがこれ

VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/I

僕は脳死でこれをコピp...なんでもないです
・一意性の検証
   uniquness: trueオプションを使う、 ただし、メールアドレスの場合大文字小文字は区別しないので
   大文字小文字を区別しない一意性の検証ができると良い、その場合
   uniqueness: { case_sensitive: false }とcase_sensitive: falseオプションを使う
   些細なこと(case_sensitive)は気にしない(false)、一意性の設定みたいな感じ
・インデックスって?
   モデルでデータのカラム検証をしたりするが、もうちょっとデータの検証に保証が欲しいとか+α何か欲しいときに
   使われる
   データベースをほんの一部分だけ変更するので
   rails generate migration add_index_to_users_email とmigrationを新たに作成
   ファイル名はどこのテーブルのどのカラムへみたいに記述すると良い