如何从ApplicationController“继承”一个类变量

时间:2013-07-24 04:29:55

标签: ruby-on-rails ruby model-view-controller

我对铁路有点新意。

说我想做点什么:

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

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

2 个答案:

答案 0 :(得分:1)

在每个控制器的开头使用:before_filter

before_filter :is_admin

至少那时你不必为每一种方法都这样做。

答案 1 :(得分:0)

我不确定调用is_admin?的确切问题是什么。在Ruby中调用方法非常便宜。您可能希望“记住”返回值,以避免每次调用方法时都调用数据库:

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

  @is_admin
end

由于is_admin?可以返回假名值,||=将无效。