2016-04-27 26 views
1

我試圖覆蓋的authenticate_user方法時,我應該如何將用戶重定向到註冊的路線,而不是登錄路由,但它似乎導致無限循環使用設計

+0

你能詳細說一下嗎?你想在什麼條件下將用戶重定向到註冊路徑? –

回答

0

你不應該用色器件文件混亂除非你知道你在做什麼。您應該使用

if current_user something else link_to "Join up", new_user_registration_path

+0

這完全覆蓋了authenticate_user方法 – Edward

+0

雖然它並沒有混淆實際的方法。這是關鍵。從本質上講,它沒有觸及設計文件就做同樣的事情。那是我的思路。 – myself

0
if user.activated? && user.authenticated?(:activation, params[:id]) 
     user.activate 
     log_in user 
     flash[:success] = "Account activated!" 
     redirect_to user 
    else 
     flash[:danger] = "Invalid activation link" 
     redirect_to root_url 
    end 
0

可以如下做到這一點很容易:

添加一個名爲authenticate_user!方法,它覆蓋了默認的方法將用戶重定向到註冊的路徑,如果用戶沒有登錄。 。

應用控制器:

class ApplicationController < ActionController::Base 

    before_action :authenticate_user!, :unless => :devise_controller? # This prevent the infinite redirects. 

    protected 
    def authenticate_user! 
     if !current_user 
      redirect_to new_user_registration_path  
     end 
    end 
end 
+0

如果我希望它是全球性的,該怎麼辦? – Edward

+0

@愛德華我已編輯我的答案,使其全球檢查它。 –