Rails:当需要在Devise中登录时,重定向以注册而不是登录

时间:2015-12-01 04:41:16

标签: ruby-on-rails ruby-on-rails-4 devise

添加

before_action :authenticate_user!

在任何控制器中,如果您未登录,该控制器的操作会重定向到登录页面,但是如何重定向到注册路径呢?

2 个答案:

答案 0 :(得分:1)

您可以添加authenticate_user! application_controller.rb的方法

class ApplicationController < ActionController::Base
    before_filter :authenticate_user!        

    protected
    def authenticate_user!
        redirect_to new_user_registration_pah, notice: "You must login" unless user_signed_in?
    end

答案 1 :(得分:1)

具有

before_action :authenticate_user!

在控制器中,您使用devise中的继承方法。

要使其以任何方式执行,这与原始实现不同,您必须覆盖它。

要这样做,您只需在控制器中定义方法并将行为更改为您想要的任何内容。

在您的情况下,最接近您需求的是:

def authenticate_user!
  redirect_to( new_user_registration_pah, alert: 'Your custom message here') unless user_signed_in?
end