2010-11-18 37 views

回答

12

用class Devise :: RegistrationsController heriting创建一个控制器。您可以添加您的过滤器后。你只需要定义该控制器像登记控制器

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

在你的routes.rb

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

感谢这就是我一直在寻找 – stephenmurdoch 2010-11-18 09:01:05

+1

它不工作了...... – nverinaud 2012-07-04 13:43:41

+4

@nverinaud我知道它已经一年多了,因为你的评论,但只是作为提醒,你可以通过使用'authenticate_scope!'来代替。 – 2013-09-21 14:29:46

4

因为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 
+1

这里有一个很好的观点,通常一个标准的Rails应用程序不会为每个动作都使用Devise,所以你的解决方案非常有效。这对我来说很有用。 – Puce 2014-03-02 23:54:04