コントローラについて(赤本P414)
コントローラの戻り値(赤本P416)
- コントローラはリクエストごとに、
- renderメソッド(P417)
- redirect_toメソッド(P421)
- send_xxxメソッド
- のいずれかを1つのみ呼び出せる。
- ※これらのメソッドは実行メソッドを終了させるものではない。
- いずれもない場合は、メソッド名から対応するviewを表示する。(これが標準の手法)
フラッシュ(赤本P434)
- リダイレクト後まで値を保持する機能。
- flash[:notice] = "ここにメッセージを書く"
- flash.now[:notice] //--フラッシュを更新するが、セッションには追加しない?
- flash.keep(:notice) //--現在フラッシュの中身を次のリクエストまで保持する。引数なしだと全て保持。
フォームの値の検証(赤本P360)
属性の値が特定の範囲外(内)であることの検証(赤本P361)
- validates_exclusion_of :age, :in => 0..19, :message => "一緒に飲みに行きましょう!"
- validates_inclusion_of :age, :in => 0..19, :message => "酒は20歳からだよ!"
属性値の長さを検証(赤本P362)
- validates_length_of :name, maximum => 50,
- validates_length_of :password, :in => 6..20
- (別名)validates_size_of
属性が有効な数値であることを検証(赤本P363)
- validates_numericality_of :age, :only_integer => true
属性が空でないことを検証(赤本P364)
- validates_presence_of :name, :password
属性が一意であることを検証(赤本P364)
- validates_uniqueness_of :name, :scope => "group_id"
※検証時に一意であるだけで保存時は考慮されていない、が、まぁそう気にしないでいいだろ。
全ての検証メソッドには:ifと:unlessが付けれる(赤本P365)
- Proc使うのが一般的らしい。
- 詳しくは赤本読め。
保存の前(後)に検証(赤本P367)
- before_validation :[メソッド名]
など。
フィルタと検証(赤本P436)
基本
- before:アクションを実行する直前/falseを返すとアクションは実行されない。
- after :アクションを実行した直後
- around:上記の両方
before/afterフィルタ
- コントローラに設定する。
- before_filter :[実行メソッド] (,[オプション])
- after_filter :[実行メソッド] (,[オプション])
- ex)before_filter :authorize, :except => :login
- ex)after_filter :log_access, :only => [:delete, :edit]
- アクション実行前にauthorizeメソッドを実行する。ただし、loginメソッドの前には実行しない。
- アクション実行後にlog_accessメソッドを実行する。ただし、deleteメソッドとeditメソッドの時だけ。
オプション | 説明 |
---|---|
:except | フィルタから除外するメソッドを指定 |
:only | フィルタを実行するメソッドを指定 |
aroundフィルタ
- around_folter :[実行メソッド]
- アクションはyieldで呼び出す。
ex)
def time_an_action
started = Time.now
yield #ココで呼び出したメソッドを実行
elapsed = Time.now - started
logger.info("#{action_name} took #{elapsed} seconds")
end
- オプションはbefore/afterと一緒。
検証(赤本P441)
- beforeフィルタの一般的な用途は値が条件を満たしているかどうか。verifyを使えばより簡単に書ける。
- verify [オプション]...
ex)
verify :only => :post_comment,
:session => :user_id,
:add_flash => { :note => "コメントするならログインしろ" },
:redirect_to => :index
オプション | 説明 |
---|---|
適用範囲 | |
:only | 指定したアクションのみ検証する |
:except | 指定したアクション以外検証する |
テスト | |
:flash | フラッシュが指定したキーを含む必要がある。 |
:method | リクエストメソッド(get、post等)が、指定したシンボルのどれかと一致するか。 |
:params | リクエストパラメータが指定したキーを含む必要がある。 |
:session | セッションが指定したキーを含む必要がある。 |
:xhr | リクエストは、Ajaxとして呼び出されたか。 |
アクション | |
:add_flash | フラッシュにマージできる。要は追加できるってことかな。 |
:add_headers | レスポンスヘッダにマージできる。要はついk(ry |
:redirect_to | 指定したパラメータハッシュを使ってリダイレクトする。 |
:render | 指定したパラメータハッシュを使ってレンダリングする。 |
キャッシュ(赤本P442)
かかない。
- 最終更新:2011-02-16 10:12:54