2011-01-13 28 views
5

tôi đang cố gắng để tạo ra một hành động mà sẽ kiểm tra cho mỗi trang nếu người dùng đang đăng nhập Cho rằng, trong bộ điều khiển Home Tôi tạo ra phương pháp này:.before_filter với một bộ điều khiển

def check_session 
    if !session[:user_id] 
    redirect_to :action=> 'login' 
    end 
end 

Và Tôi đã đặt mã này ở phần đầu của bộ điều khiển:

before_filter :check_session, :except => [:sub_layout, :authenticate, :login] 

Bây giờ tôi muốn sử dụng check_session từ bên ngoài trang Home, cho phép nói trong các trang của Users. Cú pháp chính xác để gọi phương thức của một bộ điều khiển khác trong before_filter là gì?

Trả lời

7

Nếu bạn di chuyển mọi thứ bạn đã có đến application_controller, nó sẽ kiểm tra mọi bộ điều khiển trong ứng dụng của bạn. Sau đó, sử dụng :skip_before_filter method để bỏ qua kiểm tra cho bất kỳ bộ điều khiển/hành động nào bạn muốn.

+0

OK và cách xác định phương thức: ngoại trừ? – hizki

+0

Hizki, câu trả lời đã chỉnh sửa để giúp bạn. – JackCA

+0

Cảm ơn bạn! một điều khác ... Cho phép nói rằng tôi sẽ có nhiều 'before_filter's, là có một cách để xác định cái nào để bỏ qua? Chỉnh sửa: Tôi đã tìm liên kết cho phương pháp. Nó được giải thích ở đó ... Cảm ơn một lần nữa! – hizki

Các vấn đề liên quan