0

我对rails有点陌生。

说我想做类似的事情:

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

我可以在 ApplicationController 中定义它,但是我必须is_admin?()在每个后续控制器中调用每个方法。有没有我不知道的解决方法?

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 回答