我在Rails 4应用程序中使用设计进行身份验证。几乎所有的应用程序都要求用户进行身份验证,但是,有一些公共'页面(条款和条件 - 那种东西)。
使用sign up
设计自己使sign in
和prepend_before_filter :require_no_authentication
页面公开。但是,该方法is intended only for devise controllers。并且设计似乎并没有提供一个适当的'公开单一行动的方法。
那么,公开几项行动的最佳方式是什么?
到目前为止,我能想到的唯一方法是:
创建一个新的public
命名空间,并为公共操作设置单独的控制器,这些控制器从未执行PublicController
的{{1}}继承
与上面相同,但抛弃了继承和命名空间。所以before_filter :authenticate_user!
可以作为任何需要公开的东西的桶 - 在这个阶段并不多。
有没有更好的方法通过设计公开个人行动?
答案 0 :(得分:4)
在您的控制器中,您希望:
before_action :authenticate_user!, :except => [:index]
这将对除:authenticate_user!
操作之外的所有操作执行index
方法。
您可以在此answer找到更多解释。
答案 1 :(得分:4)
您可以选择将skip_before_action用于公共控制器。 guides的示例:
class LoginsController < ApplicationController
skip_before_action :require_login, only: [:new, :create]
end