tnkzw.sake

HomeSeriesTagsAbout

Rails Tutorialで学べることメモ-第11章-

Series
Railsチュートリアル

Rails Tutorial を改めてしっかりやり直してのメモ第 11 章編

https://railstutorial.jp/chapters/account_activation?version=7.0https://railstutorial.jp/chapters/account_activation?version=7.0

便利なコマンド・メソッド

assert_match

文字列を正規表現でテストできる。

assert_match 'baz', 'foobar'      # false
assert_match /\w+/, 'foobar'      # true

CGI.escape(arg)

@%40にするようなエスケープ処理を行う。

super

superを呼び出したメソッドと同名の規定クラスメソッドを実行するための記述。

update_columns

update_attributeupdate_attribute(:name, "sake")のように特定の属性をコールバックなしに更新する際に利用した。

update_columnsは同じくコールバックなしの更新で、複数属性を更新できる。引数には属性と値のハッシュを取る。

知識

メソッド参照

before_createのようなコールバックメソッドにブロックの無名関数ではなく、メソッド名を渡す書き方。

before_create :create_activation_digest

クエリパラメータ

URL の末尾に疑問符?をつけて、その後にキーと値のペアを記述する方法。複数記述する場合は&で繋ぐ。

example.com/users/1/edit?token=xxxxxxxxx&email=sample%40example.com

メタプログラミング

プログラムでプログラムを作成するような機能、コト。
Ruby のメタプログラミング機能は非常に強力で、Rails の黒魔術の多くはこれを活用して生み出されているらしい。

sendメソッドはオブジェクトに呼び出したいメソッドを「メッセージする」ことで、その結果を受け取るようなメソッドである。

例えば

foo = "sample text"
foo.length
foo.send(:length)
foo.send("length")

これらは全て同じ結果を返す。これを使えば、動的にメソッド呼び出しが可能になる。

&&and

両者の動作は「ほぼ」等価。
&&演算子の方がandよりも優先順位が高い。

Mailgun

メール配信を行うことができるクラウドサービス。
無料でクレジットカードなどの登録なしに始めることができ、本番環境でのメール送信テストができる。

Mailgun の gem を使って API キーとドメイン情報を設定することで、いい感じにラップされた Mailer クライアントとしてコードを書く方法もありそうだったが、チュートリアル内では単純に SMTP サーバーとして指定するような設定をしている。

まとめ

アカウント登録時のメールによる有効化を題材に、これまで扱ったトークンの扱いの復習になるような内容やメールの扱いをメインで学ぶ章だった。

クエリパラメータや文字列のエスケープ処理は無知で挑めば必ずハマる沼なので、ここでサラッと取り上げられているのはすごくいい。

また、Ruby の特徴の一つであるメタプログラミングにも触れられている。個人的にはこれって使っちゃっていいのかな...?と感じる機能の一つだったので、ユースケース例にここで触れられるのは助かるなぁと感じた。