Rails 3.2.5、デバイス 2.1
Devise を使用してユーザーを認証していますが、新しいユーザーを作成するときに問題が発生しています。
before_save
ユーザーは、User モデルのフィルターを使用して作成したアカウントに属しています。これは正常に機能し、しばらくの間機能します。
新しいコードでは、create メソッドの一部としてユーザーのアカウント情報が必要です。リクエストで渡されたパラメーターに依存しているため、これはモデル ロジックの良い候補ではありません。Devise::RegistrationsController#create メソッドをオーバーライドしました。
class DeviseCustom::RegistrationsController < Devise::RegistrationsController
def create
super # Call Devise's create
account = current_user.account # FAIL! (current_user is nil)
account.partner_id = current_partner
account.save!
end
end
current_user
コードがnil
失敗する原因です。障害が発生した場合でも、ユーザーとアカウントのレコードがデータベースに保存commit
されていることがわかります。ログにself.inspect
は .
このコンテキストで利用できると思っていたcurrent_user
でしょう-作成したばかりのユーザーに到達するための適切な方法は何ですか?
ありがとう