防止rails引擎内的控制器中的操作执行

时间:2012-06-14 04:10:11

标签: ruby-on-rails ruby-on-rails-3.2 rails-engines

要防止在rails应用程序中的某个控制器中执行操作,除非经过身份验证,您可以使用

before_filter :validate_user, :only => [:create, :update]

除非授权用户尝试创建和更新,否则这将阻止执行创建和更新。如果创建和更新操作位于rails引擎内的控制器中,则不起作用。

如何有条件地阻止在rails引擎内的控制器上执行操作?

1 个答案:

答案 0 :(得分:0)

如果有问题的validate_user方法返回false,则暂停过滤器链并且不会执行操作。

典型的模式如下:

def validate_user
  unless (...valid_conditions...)
     flash[:error] = "You're not logged in."
     redirect_to(login_path)
     return false
   end
end

您可以在暂停过滤器链之前执行任何操作,但最好是先redirectrender