現場で使えるRuby on Rails5 速習実践ガイド 読書メモ
https://scrapbox.io/files/64b658e8d636b0001c7caba8.png
オブジェクトID
code: ruby
puts "hoge"
puts 1
hogeの方は毎回変わる。
Q.キーワード引数とデフォルト引数を比較して何か述べてください
デフォルト引数は、例えば2つの引数があって2つ目だけ渡したい場合も1つ目の引数を省略できない
キーワード引数は省略できたり、渡す順序が関係なかったりする
一方で、どのキーワードに対応する値か書かないといけないし、キーワードも当然省略できない
ちなみに、キーワード引数は必ずデフォルト値を設定しなければいけないというわけではない
has_manyはクラスメソッド
フレームワーク独自の構文がクラスメソッドだったりするケースも多い
エラーの捕捉の省略
code:ruby
begin
hoge
rescue => e
# StandardError及びその子クラスのエラーを捕捉
end
nilガード
code: ruby
hoge || hoge = 10
nilが入ってしまう場面でデフォルト値を決める際に良い書き方!
YAMLのエイリアスとアンカー
<< これってそういう名前だったんだ。&エイリアス、それを<<エイリアスで内容を再利用できる。
migrationでVERSIONを指定すると、そこまでが実行された状態にできる
ユニークインデックス
code:ruby
class AddIndexToUsersEmail < ActiveRecord::Migration5.0 def change
add_index :users, :email, unique: true
end
end
カスタムバリデーター
app/validatorsにおくと良さそう
code:ruby
class MyValidator < ActiveModel::Validator
def validate(record)
unless record.name.start_with? 'X'
record.errors.add :name, "名前はXで始まる必要があります"
end
end
end
# 呼び出し
class Person
include ActiveModel::Validations
validates_with MyValidator
end
次P142から
update_all
検証は行われない、コールバックも呼ばれない
sessionとcookie
sessionはアプリケーション側での実装。cookieはブラウザとWebサーバーの間で使われる。
別物というよりも、sessionの仕組みの一部がcookieによって実現されている。
セッションのデフォルトの保存先はcookie。
digest
一方向的な変換(ハッシュ化)
has_secure_passwordの機能とgem bcryptで認証機能作れる
current_userみたいなセッションを使うメソッドほどメモ化できる
skip_before_action
便利。ログイン画面だけログイン不必要とかできる。exceptとかもあったかも。
次P170から