0

私はレールに少し慣れていません。

次のようなことをしたいとします。

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

is_admin?()これは ApplicationController で定義できますが、その後のすべてのコントローラーですべてのメソッドを呼び出す必要があります。私が気付いていないこれを回避する方法はありますか?

4

2 に答える 2

1

:before_filter各コントローラーの開始時にa を使用します。

before_filter :is_admin

少なくとも、すべてのメソッドに対して行う必要はありません。

于 2013-07-24T04:31:45.453 に答える
0

通話の問題が何であるか正確にはわかりませんis_admin?。Ruby でのメソッド呼び出しは非常に安価です。メソッドが呼び出されるたびにデータベースへの呼び出しを避けるために、戻り値を「メモ化」することができます。

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

  @is_admin
end

is_admin?偽の値を返す可能性があるため、機能しませ||=ん。

于 2013-07-24T04:40:27.750 に答える