Rails中的全局控制器变量

时间:2012-01-02 18:21:38

标签: ruby-on-rails ruby

我有一个ChatController和一个@user变量。在主页面上,我显示@user.name。我也有破坏和创建与ajax一起使用的方法,所以当我从聊天中删除一条消息时,@user变为零。为了防止问题在nil对象上调用name,我可以为每个方法添加@user=User.find_by_id(:user_id)。但如果我有很多方法,这就变得乏味了。我可以声明@user=User.find_by_id(:user_id)一次并干掉我的代码吗?

1 个答案:

答案 0 :(得分:7)

是的,这是在before_filterDocumentation)中完成的。

类似的东西:

class ChatController < ActionController::Base
  before_filter :find_user


  private
  def find_user
    @user ||= User.find_by_id(params[:user_id])
  end
end

您也可以考虑使用Inherited Resources为您自动执行此操作。