では、例えばログインを必要とするシステムにおけるページ表示前の認証の確認処理など、全コントローラに共通の処理はどこにどのように書けばよいでしょうか。
Padrinoのプロジェクトルートから見て、app/app.rbに書けばよいと思います。この中のAppクラスの宣言文の中に、before〜endを使って書けば全コントローラの処理前に実行される処理が書けます。
例えば上で挙げたログイン判断の場合ですと、
before do if /^\/login/ =~ request.path_info # ログインコントローラの場合、ログイン済みならトップ画面へリダイレクト redirect url_for(:top, :index) if logged_in? else # ログインコントローラ以外の場合、未ログインならログイン画面へリダイレクト redirect url_for(:login, :index) unless logged_in? end end
のような感じで書けますね。上記のようにURLによって処理を分けて書くこともできます。また、ヘルパーメソッドも使えます。
※この記事について指摘・意見・提案・感想などありましたら下のコメント欄にどうぞ。
0 件のコメント:
コメントを投稿