我對rails有點新鮮。如何從ApplicationController「繼承」一個類變量
說我想要做的事,如:
def is_admin?
@admin = User.grab(session[:username]).admin
end
我可以在ApplicationController中定義了這一點,但後來我打電話給is_admin?()
在每個方法中後續的控制器。有沒有解決方法,我不知道?
我對rails有點新鮮。如何從ApplicationController「繼承」一個類變量
說我想要做的事,如:
def is_admin?
@admin = User.grab(session[:username]).admin
end
我可以在ApplicationController中定義了這一點,但後來我打電話給is_admin?()
在每個方法中後續的控制器。有沒有解決方法,我不知道?
使用:before_filter
在每個控制器的開始:
before_filter :is_admin
至少這樣你不必這樣做對每一個方法。
我不確定撥打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,||=
將無法正常工作。