gpt4 book ai didi

ruby-on-rails - 当使用延迟作业调用模型方法时,字符串值将转换为 Time 对象

转载 作者:行者123 更新时间:2023-12-04 06:00:57 24 4
gpt4 key购买 nike

我正在使用延迟作业在另一个 Model 中对 Model 方法进行排队,如下所示:

article_loader.rb

date_value_in_string =  "2017-06-21 07:17:00"
Article.delay(:queue => 'article_load').article_loading([date_value_in_string])

即使我已将 String 作为参数传递给该方法,但在该方法内部它会转换为 Time 对象。

文章.rb

def self.article_loading(args)
date_value = args[0]
p date_value.class # Time
end

我不知道为什么会这样。任何帮助将不胜感激。

最佳答案

发生这种情况是因为字符串对于 Ruby 的默认 YAML 加载器来说看起来像一个日期时间。 DelayedJob 使用 YAML 进行序列化,所以这方面表现出来。

如果您想将字符串保留为字符串,请在其开头填充一些填充字符,例如 x 或其他内容。演示如下。

考虑这个 1.yml:

ds: 2017-06-21 07:17:00

,然后,在 IRB 中,执行:

>> require "yaml"
>> YAML.load_file("1.yml")
=> {"ds"=>2017-06-21 11:17:00 +0400}
>> _["ds"].class
=> Time

关于ruby-on-rails - 当使用延迟作业调用模型方法时,字符串值将转换为 Time 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44942178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com