我正在使用Sorcery gem(版本0.8.6)来验证Rails 4.0.4应用程序中的Company
条记录。
身份验证流程运行正常,但在尝试使用Sorcery的子模块:reset_password
和:user_activation
时遇到了问题。在undefined method
记录(Company
)的实例上调用Sorcery子模块中定义的实例方法时,Rails会抛出@company
个异常:
问题存在间歇,我无法以任何逻辑方式重现。 1%的时间@company
将按照预期的方式处理该方法,而其他99%的时间都没有。{/ p>
在上面的屏幕中,我尝试拨打deliver_reset_password_instructions!
中定义的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!
,如果我是正确的,应该包含这些子模块,并使用任何配置子模块中定义的方法扩展模型。
值得一提的是,@company
以及reset_password.rb中定义的所有其他实例方法都发生了相同的行为(我没有直接调用它,但是Sorcery只在1%的时间调用它一个成功的公司创建)。
现在已经挣扎了大约2天,已经没有想法了。
非常感谢任何帮助!
更新
答案 0 :(得分:2)
我发现了问题!
我找到了! 1.5天后。
在我的rails_admin
初始化程序中,我有以下几行:
Rails.application.eager_load!
config.included_models = ActiveRecord::Base.descendants.map!(&:name)
解决上述问题:sferik / rails_admin#1697
这显然与法术不太好。
一切都很好。
更多信息: GitHub Issue