在filter之前进行设计,以防止访问“new_user_registration_path”,除非用户已登录

我在我的rails应用程序中使用Devise。 我的用户模型是可注册的,这意味着任何人都可以转到/ users / sign_up并创建一个新帐户。

是否可以保护此路由,以便只有signed_in用户才能创建新帐户?

使用类Devise :: RegistrationsController heriting创建一个Controller。 您可以添加filter。 您只需要将此控制器定义为注册控制器

class RegistrationsController < Devise::RegistrationsController before_filter :authenticate_user! end 

在您的routes.rb中

 devise_for :users, :controllers => { :registrations => 'registrations'} 

它对我没用,因为authenticate_user! 没有被召唤。

我这样解决了:

 class RegistrationsController < Devise::RegistrationsController before_filter :prevent_sign_up private def prevent_sign_up redirect_to new_user_session_path and return end end