2014-06-19 92 views
2

當用戶註冊與設計,我想檢查他們的電子郵件地址包含@mysite.com,如果是這樣,在新的用戶ID的表中創建一個新的記錄。做一下立即制定下一個控制器註冊

我一直在尋找通過設計文檔的方式來採取行動後,用戶註冊(因爲我需要他們的ID爲協會),但我發現的所有是after_sign_up_path_for這只是一個路徑。

任何想法?

class Users::RegistrationsController < Devise::RegistrationsController 
    after_filter :do_something, only: :create 

    def create 
    ... 

    super 

    ... 
    end 

    def do_something 
    # User succesfully created? 
    return unless @user.id 

    ... @user.id 
    end 
end 
+0

的可能重複[我可以執行成功的標誌後自定義操作與設計?(http://stackoverflow.com/questions/4753730/can-i-execute-custom-actions-after-successful-sign-in -with-devise) –

+0

我不想定義我自己的重定向路徑。如果有一種方法可以在不重寫重定向路徑的情況下使用他們的解決方案,那麼他們的解決方案是可行的。 –

+0

難道你不能只在'after_sign_up_path_for'結束後使用call'super'嗎?或者那不行? –

回答

0

我從我的應用程序之一複製下面的結構。您可以在用戶模型中使用回調,而不是在控制器中使用回調,其優點是您無需重寫Devise Registrations控制器。

documentation的DatabaseAuthenticatable。

我在我的Rails Devise Tutorial中介紹了一些類似的技術,但在教程中我只提到了after_database_authentication回調方法,指出不必重寫Devise Registrations控制器以適應註冊後操作。

2

如果您需要在用戶登錄後執行的功能,設計提供了一個after_database_authentication回調方法:

class RegistrationsController < Devise::RegistrationsController 
    def create 
    super 

    # I was hoping "super" creates the new user, and now I would have access to current_user.id, but that doesn't appear to be true. 
    end 
end 
+0

非常感謝!我一直在尋找一個好的解決方案,最後我找到了一個! :) –

相關問題