私はレールに少し慣れていません。
次のようなことをしたいとします。
def is_admin?
@admin = User.grab(session[:username]).admin
end
is_admin?()
これは ApplicationController で定義できますが、その後のすべてのコントローラーですべてのメソッドを呼び出す必要があります。私が気付いていないこれを回避する方法はありますか?
私はレールに少し慣れていません。
次のようなことをしたいとします。
def is_admin?
@admin = User.grab(session[:username]).admin
end
is_admin?()
これは ApplicationController で定義できますが、その後のすべてのコントローラーですべてのメソッドを呼び出す必要があります。私が気付いていないこれを回避する方法はありますか?
:before_filter
各コントローラーの開始時にa を使用します。
before_filter :is_admin
少なくとも、すべてのメソッドに対して行う必要はありません。
通話の問題が何であるか正確にはわかりませんis_admin?
。Ruby でのメソッド呼び出しは非常に安価です。メソッドが呼び出されるたびにデータベースへの呼び出しを避けるために、戻り値を「メモ化」することができます。
def is_admin?
unless defined?(@is_admin)
@is_admin = User.grab(session[:username]).admin
end
@is_admin
end
is_admin?
偽の値を返す可能性があるため、機能しませ||=
ん。