2013-04-05 49 views
0

我正在將Omniauth和Devise集成到我的第一個Ruby應用程序中。目前在谷歌工作。Omniauth與設計 - 處理邀請場景

它的作品,我愛這一切。我可以通過點擊我的應用程序中的鏈接成功註冊,在谷歌中進行身份驗證,然後重新導向......所有按預期操作。

我需要支持當前用戶邀請新用戶一起處理項目。爲此,我允許當前用戶創建新的用戶行,並指定新用戶的電子郵件地址。該行作爲存根添加,因此可以將工作分配給新用戶。

我希望新用戶可以通過點擊我的應用程序中的谷歌鏈接,在谷歌中進行身份驗證,然後重定向回我的應用程序,然後在某個時間註冊。

發生這種情況時,我得到這個錯誤:

1 error prohibited this user from being saved: 
Email has already been taken 

我明白爲什麼,但我掙扎試圖找到正確的掛鉤,我可以&應該使用改變行爲以允許註冊用戶採取在爲他創建的存根用戶行上。

編輯:有關寶石的 列表(我認爲):

- devise (2.2.3) 
- oauth (0.4.7) 
- oauth2 (0.8.1) 
- omniauth (1.1.3) 
- omniauth-facebook (1.4.1, 1.4.0) 
- omniauth-google (1.0.2) 
- omniauth-google-oauth2 (0.1.13) 
- omniauth-oauth (1.0.1) 
- omniauth-oauth2 (1.1.1, 1.0.3) 

編輯 - 設計模塊

devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable, :omniauthable 
+0

你目前使用什麼設計模塊? – 2013-04-05 19:36:06

+0

這是你在找什麼?設計(2.2.3) – Doug 2013-04-05 19:42:17

+0

不,設計有一些你可以使用或不使用的模塊,例如'registerable','confirmable'等等。 – 2013-04-05 19:44:34

回答

0

自答案....

我從來沒有確實找到了一種修改行爲的方法,所以放入了一個黑客。我創建了一個新表來存放invita當沒有註冊的人被邀請時插入。被邀請者第一次訪問該網站時,我會自動接受邀請。

似乎應該有一個更優雅的解決方案... ...隨意分享後人!