Rails枚举在Sidekiq作业中返回整数值

时间:2018-07-23 14:05:51

标签: ruby-on-rails ruby-on-rails-5 sidekiq

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

  

NoMethodError:1:Integer的未定义方法`to_sym'是什么意思?   to_s

enum status: [:active, :inactive, :deleted]

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

1 个答案:

答案 0 :(得分:0)

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

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

Sidekiq是Ruby的处理器,因此引入它会在Rails上建立不必要的依赖关系。

当然,这是我的看法,但是经过仔细考虑之后,Rails应该是与它们各自的符号形式等效的一个处理数字。例如,您可以将status设置为0,:active或'active',并进行适当保存,但是get期间返回的值应保持一致或提供确保一致性的方法。