Ruby on rails 在“您想要”时使用“过滤语法”之前;除「;控制员;abc";
在Rails中,当您想要“除了”控制器“abc”时,什么是before_过滤器语法 例如,如果我想说:Ruby on rails 在“您想要”时使用“过滤语法”之前;除「;控制员;abc";,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,在Rails中,当您想要“除了”控制器“abc”时,什么是before_过滤器语法 例如,如果我想说: before_filter :login_required :except => ["-name of controller-"] 背景-只需要在整个应用程序中进行基本身份验证,但实际处理用户身份验证的控制器除外。…您可以在控制器中放置以下行,其中不应执行之前的过滤器: skip_before_filter :login_required 您甚至可以指定使用:only和:except
before_filter :login_required :except => ["-name of controller-"]
背景-只需要在整个应用程序中进行基本身份验证,但实际处理用户身份验证的控制器除外。…您可以在控制器中放置以下行,其中不应执行
之前的过滤器
:
skip_before_filter :login_required
您甚至可以指定使用:only
和:except
选项忽略前过滤器的方法:
skip_before_filter :login_required, :only => [:login]
举个例子
编辑:在Rails 4中,before\u filter
与before\u action
混在一起,而skip\u before\u filter
也与skip\u before\u action
混在一起
before_filter :login_required, :except => ["-name of the action-"]
看看。我建议不要使用控制器名称,而是利用控制器从其父级继承其过滤器这一事实。所以我推荐如下:
# app/controllers/application_controller.rb
class ApplicationController
# no filters here
end
# app/controllers/authenticated_controller.rb
class AuthenticatedController < ApplicationController
before_filter :login_required
end
# app/controllers/some_other_controller.rb
class SomeOtherController < AuthenticatedController
# inherits the before_filter from AuthenticatedController
# use this for most of your other controllers
end
# app/controllers/unauthenticated_controller.rb
class UnauthenticatedController < ApplicationController
# no filters, since this inherits directly from ApplicationController
# use this for the controller that you don't want to check login on
end
#app/controllers/application_controller.rb
类应用程序控制器
#这里没有过滤器
结束
#app/controllers/authenticated_controller.rb
类AuthenticatedController<应用程序控制器
筛选前:需要登录
结束
#app/controllers/some_other_controller.rb
类SomeOtherController
这意味着控制器知道他们是否应该检查登录,而不是有一个(可能很脆弱的)姓名列表。@Thrabbit很乐意提供帮助!我认为,如果您不想使用继承,也可以使用模块包含来实现这一点,但我还没有尝试过。