[ruby-on-rails] 如何在Devise中手動創建新用戶和用戶會話?


Answers

在sign_in之前保存新創建的用戶將失敗,因為設計尚未填充用戶對象的必填字段。 因此,David的代碼將適用於當前頁面,但下一頁將無法獲得登錄用戶,因為用戶僅在設置會話後保存。 當我使用Mongoid時會發生這種情況,我不知道它是否是Mongodb特有的問題。

為了解決這個問題,我有一個非常不完美的解決方案,可以兩次調用sign_in。 第一個sign_in將保存用戶。 它只是有效但人們可以肯定地改進它。

@user = User.new(:email => 'test@example.com',
                 :password => 'password',
                 :password_confirmation => 'password')
# This will save the user in db with fields for devise
sign_in @user
# :bypass is set to ignore devise related callbacks and only save the
# user into session.
sign_in @user, :bypass => true 
Question

我有一個表單,我在Rails中收集了大量信息。 此表單的一部分是要註冊的新用戶的字段。 由於Devise具有專門用於創建新用戶的控制器/操作,因此我不知道如何以完全不同的操作以編程方式創建用戶,同時創建另一個記錄。 我真的不能將用戶註冊表分開。 我無法弄清楚如何創建用戶,然後記錄用戶,就像我在Authlogic中可以輕鬆做的那樣。

我使用了Authlogic和Devise,並認為每個都有自己的優點和缺點。 有了Devise,我喜歡用新項目“開始”的速度有多快,但定制它似乎很痛苦。 一段時間後,Authlogic對Rails 3有很多問題,我轉而使用Devise。 我現在正在開發一個新項目並從頭開始。

所以我認為這個問題有2個可能的答案:(a)如何在Devise中做到這一點,或者(b)為什麼我應該用Rails 3切換到Authlogic。






Related