5/17 8:20開始
rails console --sandbox
→サンドボックスモード:セッションで行ったデータベースへの変更をコンソールの終了時にすべて “ロールバック”する。
valid?メソッド
→オブジェクトが有効かtrue/falseで評価する。
※invalid?メソッドはその逆
6.1まで終了
5/17 9:00 終了
5/18 8:15 開始
・modelのテスト
*model作成時に↓にテストファイルが作成される。
test/models/user_test.rb
*setupメソッド
setupメソッド内に書かれた処理は、各テストが走る直前に実行される。
インスタンス変数でも、setupメソッド内で宣言しておけば、
すべてのテスト内でそのインスタンス変数が使えるようになる。
*正規表現
Rubular↓で対話的に正規表現を試せる。
https://railstutorial.jp/chapters/modeling_users?version=7.0#code-better_email_regex
6.2.4まで終了
5/18 9:10 終了
5/18 18:30 開始
*dup:同じ属性を持つデータを複製するためのメソッド。
*一意性のテスト
メールなど大文字と小文字を区別しないでテストしたい場合...
↓とすることで実現できる。
app/models/user.rb
uniqueness: { case_sensitive: false }
*データベースのレベルで一意性を保証
データベース上の一意性を保証したいカラムにインデックス(index)を追加し、
そのインデックスが一意であるようにする。
具体的には...
マイグレーションでインデックスを追加する。
$ rails g migration add_index_to_users_email
↓のマイグレーションファイルが作成される。
db/migrate/[timestamp]_add_index_to_users_email.rb
add_indexメソッドを使用し、インデックスを追加する。
(usersテーブルのemailカラムにインデックスを追加。オプションでunique: trueで一意にする。)
class AddIndexToUsersEmail < ActiveRecord::Migration[7.0]
def change
add_index :users, :email, unique: true
end
end
6.2まで終了
5/18 19:15終了
5/19 8:15 開始
・セキュアなパスワード
→ハッシュ化したものをデータベースに保存する。
ハッシュ化:ハッシュ関数を使って、入力されたデータを不可逆データ(復元不可能なデータ)に変換する処理を指す。
ログイン時は、「ハッシュ化して保存されたパスワード」と「入力したパスワードをハッシュ化した値」を比較する。
→ハッシュ化されたパスワード同士を比較することで、生のパスワードをデータベースに保存するという危険なことを回避する。
具体的には....
model内にhas_secure_passwordメソッドを追加する。
*セキュアにハッシュ化したパスワードを、データベース内のpassword_digest属性に保存できる。
*2つの仮想的な属性(passwordとpassword_confirmation)が使えるようになる。また、存在性と値が一致するかどうかのバリデーションも追加される。
*authenticateメソッドが使えるようになる(引数の文字列がパスワードと一致するとUserオブジェクトを返し、一致しない場合はfalseを返すメソッド)。
※↑を使えるようにするためには...
モデル内にpassword_digest属性が含まれていること
bcryptライブラリをGemfileに追加する
6章終了!
5/19 9:10 終了