Rails 3.2.5,设计 2.1
使用设计对用户进行身份验证,并且在创建新用户时遇到问题。
用户属于我使用before_save
用户模型中的过滤器创建的帐户。这工作正常并且有一段时间。
新代码需要用户的帐户信息作为 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
在这种情况下可以使用-获取我刚刚创建的用户的合适方法是什么?
谢谢