Ruby on rails ROR-未加载枚举
在过去的几个月里,我们的rails应用程序遇到了一个问题,每当我们进行新的部署时,某些对象的枚举数的10倍中有5倍没有加载,从而导致抛出错误 概述:在我们的应用程序中,我们有一个用户模型,其中有一个enum状态(active,In_active),In_active表示用户已离开我们的平台,因此在验证用户时,我们检查Ruby on rails ROR-未加载枚举,ruby-on-rails,ruby,caching,activerecord,Ruby On Rails,Ruby,Caching,Activerecord,在过去的几个月里,我们的rails应用程序遇到了一个问题,每当我们进行新的部署时,某些对象的枚举数的10倍中有5倍没有加载,从而导致抛出错误 概述:在我们的应用程序中,我们有一个用户模型,其中有一个enum状态(active,In_active),In_active表示用户已离开我们的平台,因此在验证用户时,我们检查如果user.status==:active则允许用户继续,否则抛出帐户已停用的错误。无论何时给出新部署,代码都会为所有用户抛出此错误,无论他们处于活动状态还是处于活动状态,为了进一
如果user.status==:active
则允许用户继续,否则抛出帐户已停用的错误。无论何时给出新部署,代码都会为所有用户抛出此错误,无论他们处于活动状态还是处于活动状态,为了进一步调试此错误,我们在日志记录之后,开始记录抛出此错误时对象的状态,我们发现,对于我们的用户模型,没有加载枚举状态,这导致了此错误,因为当时状态为nil
我们遇到此错误的代码段
enum status: [:in_active, :active]
这是服务器重启前后的日志
before: "user_obj":{"id":1,"status":null,"status_db":null}
after: "user_obj":{"id":1,"status":active,"status_db":active}
如果我们只是重新启动服务器,那么一切正常
有人能指出这里的问题吗?到底抛出了什么错误?这是一个自定义错误,我们抛出说您的帐户已被停用。您能否显示身份验证代码的相关部分(可能是错误前的3行和错误后的3行)以及如何在您的用户类上定义枚举字段?仅仅通过阅读您的问题就很难理解可能发生的情况。您的枚举列有默认值吗?Bytw这个词是
非活动的
——而不是处于活动状态的
。我已经更新了问题本身中的代码片段。
before: "user_obj":{"id":1,"status":null,"status_db":null}
after: "user_obj":{"id":1,"status":active,"status_db":active}