Ruby on rails 在Sidekiq作业中返回整数值的Rails枚举

Ruby on rails 在Sidekiq作业中返回整数值的Rails枚举,ruby-on-rails,ruby-on-rails-5,sidekiq,Ruby On Rails,Ruby On Rails 5,Sidekiq,只有在Sidekiq作业中运行时,我们才会收到带有枚举类型的错误报告。我不确定是每次运行还是随机运行,但我们通常会出现如下错误: NoMethodError:1:Integer的未定义方法“to_sym”是什么意思? 到 添加作为答案,因此此问题可以标记为已结束: return if self.status.to_sym==:deleted应该是return if deleted?。您应该使用枚举提供的神奇方法,而不是直接使用字段 Sidekiq是Ruby的处理器,因此引入它会对Rails产生不

只有在Sidekiq作业中运行时,我们才会收到带有枚举类型的错误报告。我不确定是每次运行还是随机运行,但我们通常会出现如下错误:

NoMethodError:1:Integer的未定义方法“to_sym”是什么意思? 到


添加作为答案,因此此问题可以标记为已结束:


return if self.status.to_sym==:deleted
应该是
return if deleted?
。您应该使用枚举提供的神奇方法,而不是直接使用字段

Sidekiq是Ruby的处理器,因此引入它会对Rails产生不必要的依赖


当然,这是我的观点,但是在仔细考虑之后,Rails应该是一个用符号化形式等效地处理数字的工具。例如,您可以将
状态设置为0、:active或“active”,并进行适当保存,但get过程中返回的值应一致,或提供确保一致性的方法。

如果self.status.to_sym==:deleted
应该是
如果删除则返回?
。您应该使用枚举提供的神奇方法,而不是直接使用字段。谢谢@meagar!-我们将检查代码中的这些点,并在以后的搜索中报告。@meagar这些点确实有效,你是对的。但它似乎缺少了支持枚举类型的实现细节,不是吗?无论如何,这会为一个真正特定的情况创建对Rails的依赖,而它并不真正需要。
enum status: [:active, :inactive, :deleted]

def set_status
  return if self.status.to_sym == :deleted
  ...
end