필터

IT(Old)/RubyOnRails-Tip 2008. 1. 22. 10:11

필터란 액션 컨트롤러의 액션 메소드가 실행되기 이전 또는 이후에 추가적인 작업을 할 수 있게 하는 기능이다.
필터가 유용한 이유는 여러 액션 또는 컨트롤러에 공통적으로 적용될 작업을 한 곳에서 관리할 수 있기 때문이다.

필터는 액션컨트롤러 클래스의 메소드로 정의된다. 보통 하나의 필터는 여러 개의 컨트롤러 클래스에서 공통적으로 사용되는 경우가 많으므로, 모든 컨트롤러의 부모 클래스에서 정의되는 것이 일반적이다.

-application.rb

class ApplicationController < ActionController::Base
  private
  def check_login_status
    unless session[:user_id]
      redirect_to :controller => "login", Laction => "login_form"
    end
  end

end

- users_controller.rb
class UsersController < ApplicationController
 
  before_filter :check_login_status, :except => [:list, :show]
 
....

:except나 :only를 사용하여 원하는것만 적용도 가능하다.