我使用巫术 gem (版本0.8.6)对Rails 4.0.4应用程序中的Company记录进行身份验证。
身份验证流程运行良好,但在尝试使用Sorcery的子模块-- :reset_password和:user_activation时,我遇到了一些问题。Rails在调用Company记录(Company record,@company)实例中在Sorcery子模块中定义的实例方法时抛出@company异常:

这个问题存在intermittently,我无法以任何逻辑的方式重现。1%的时间@company会像它所期望的那样处理这个方法,而其他99%的时间则不会。
在上面的屏幕中,我尝试调用deliver_reset_password_instructions!,这是在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!,如果我正确的话,它应该包括这些子模块,并使用在任何配置子模块中定义的方法扩展模型。
值得一提的是,send_activation_success_email!和在activation.rb中定义的所有其他实例方法都会发生同样的行为(我不直接调用它,但在成功的公司创建时,巫术只将其称为1% )。
与此斗争了大约两天,已经没有想法了。
任何帮助都是非常感谢的!
更新
@company响应子模块定义的实例方法),这是我离开计算机几个小时后回来的第一次。它将继续工作,直到Rails服务器重新启动。发布于 2014-08-08 10:20:10
我发现问题了!
我找到了!1.5天后。
在我的rails_admin初始化器中,我有以下几行:
Rails.application.eager_load!
config.included_models = ActiveRecord::Base.descendants.map!(&:name)解决所描述的问题: sferik/rails_admin#1697
显然这和巫术玩得不太好。
现在一切都好了。
更多信息:GitHub问题
https://stackoverflow.com/questions/25186949
复制相似问题