我有可能是延迟加载属性的参数值实际上它是从Integer的BatchLoader库获得的。使用 case-expression 时,该值的行为有点奇怪。方便起见,Integer ===(失去比较)运算符的结果是,
[11] pry(ActiveJob::Arguments)> Integer === argument.to_i
=> true
[12] pry(ActiveJob::Arguments)> Integer === argument
=> false
[13] pry(ActiveJob::Arguments)> argument.is_a?(Integer)
=> true
[14] pry(ActiveJob::Arguments)> argument.class.name
=> "Integer"
为什么第二个结果是假的,有没有办法检查参数是从哪里导出的?
正如@tadman所描述的,我们的参数变量的方法被批处理加载器库覆盖,并导致比较失败。我们可以通过@tadman的解决方案来检查它。谢谢你。