2016-03-02 99 views
0

我的應用程序中有兩個模型,User和Admin。所以,我把這些代碼放在我的應用程序控制器中:重新定向後註冊並登錄2模型(設計)

def after_sign_in_path_for(user) 
    root_path 
end 

def after_sign_in_path_for(admin) 
    admin_path 
end 

但是,它只執行最後一個(admin)。因此,無論何時我以用戶身份登錄,我都將被重定向到admin_path而不是root_path,因爲它應該是。有任何想法嗎?

回答

1

做這樣的事情,如果你有UserAdmin兩個獨立的型號:

def after_sign_in_path_for(resource) 
    resource.is_a?(Admin) ? admin_path : root_path 
end 
+0

它的工作原理!真棒!謝謝。 –

0

Ruby明白你正在重新定義after_sign_in_path_for,所以定義的最後一個會生效。

你可以簡單地修改這樣的代碼,使其工作:

def after_sign_in_path_for(user) 
    user.admin? ? admin_path : root_path 
end 

只要確保user.admin?的功能是檢查用戶是否具有管理員角色或不!

+0

它不工作,因爲我有兩個型號,用戶和管理員。它不是一個具有兩個角色的模型。 –