我正在使用Sorcery gem(版本 0.8.6)来验证Company
Rails 4.0.4 应用程序中的记录。
身份验证流程运行良好,但在尝试使用 Sorcery 的子模块时遇到了问题 -:reset_password
和:user_activation
. 当在记录 ( )undefined method
的实例上调用 Sorcery 子模块中定义的实例方法时,Rails 会抛出异常:Company
@company
该问题间歇性存在,我无法以任何合乎逻辑的方式重现。1% 的时间@company
会按照预期的方式处理该方法,而其他 99% 的时间则不会。
在上面的屏幕中,我尝试调用deliver_reset_password_instructions!
在reset_password.rb中定义的。
我的魔法初始化程序 ( config/initializers/sorcery.rb
) 包含:Rails.application.config.sorcery.submodules = [:reset_password, :user_activation]
和config.user_class = "Company"
.
我的公司模型 ( app/models/company.rb
) 包含authenticates_with_sorcery!
,如果我是正确的,它应该包含这些子模块并使用任何配置子模块中定义的方法扩展模型。
值得一提的是,在user_activation.rbsend_activation_success_email!
中定义的所有其他实例方法都发生了相同的行为(我没有直接调用它,但 Sorcery 仅在成功创建公司时调用它的 1%)。
已经为此苦苦挣扎了大约 2 天,已经没有想法了。
很感谢任何形式的帮助!
更新
- 我注意到它似乎
@company
在我离开计算机并在几个小时后回来后第一次起作用(响应子模块定义的实例方法)。它将继续工作,直到 Rails 服务器重新启动。