1

我正在使用Sorcery gem(版本 0.8.6)来验证CompanyRails 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 天,已经没有想法了。

很感谢任何形式的帮助!

更新

  1. 我注意到它似乎@company在我离开计算机并在几个小时后回来后第一次起作用(响应子模块定义的实例方法)。它将继续工作,直到 Rails 服务器重新启动。
4

1 回答 1

2

我发现了问题!

我找到了!1.5天后。

在我的rails_admin初始化程序中,我有以下几行:

Rails.application.eager_load!
config.included_models = ActiveRecord::Base.descendants.map!(&:name)

要解决所描述的问题:sferik/rails_admin#1697

这显然与巫术配合得不好。

现在一切都很好。

更多信息: GitHub 问题

于 2014-08-08T10:20:10.210 回答