2013-07-24 26 views
0

我對rails有點新鮮。如何從ApplicationController「繼承」一個類變量

說我想要做的事,如:

def is_admin? 
@admin = User.grab(session[:username]).admin 
end 

我可以在ApplicationController中定義了這一點,但後來我打電話給is_admin?()在每個方法中後續的控制器。有沒有解決方法,我不知道?

回答

1

使用:before_filter在每個控制器的開始:

before_filter :is_admin 

至少這樣你不必這樣做對每一個方法。

0

我不確定撥打is_admin?的問題到底是什麼。在Ruby中調用方法相當便宜。您可能要「memoize的」返回值,以避免每次方法被調用時調用的數據庫:

def is_admin? 
    unless defined?(@is_admin) 
    @is_admin = User.grab(session[:username]).admin 
    end 

    @is_admin 
end 

由於is_admin?可以返回一個值falsey,||=將無法​​正常工作。