Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从YAML加载ActiveRecord对象时出现反序列化错误_Ruby On Rails_Ruby_Ruby On Rails 3_Yaml_Delayed Job - Fatal编程技术网

Ruby on rails 从YAML加载ActiveRecord对象时出现反序列化错误

Ruby on rails 从YAML加载ActiveRecord对象时出现反序列化错误,ruby-on-rails,ruby,ruby-on-rails-3,yaml,delayed-job,Ruby On Rails,Ruby,Ruby On Rails 3,Yaml,Delayed Job,为什么在尝试反序列化新ActiveRecord对象时会出现此错误: [Dev]> YAML.load(Identity.new.to_yaml) Delayed::DeserializationError: Delayed::DeserializationError 同时,此示例使用现有AR对象时,效果与预期一致: [Dev]> YAML.load(Identity.first.to_yaml) => #<Identity id: 1, ... [Dev]>YAML.

为什么在尝试反序列化新ActiveRecord对象时会出现此错误:

[Dev]> YAML.load(Identity.new.to_yaml)
Delayed::DeserializationError: Delayed::DeserializationError
同时,此示例使用现有AR对象时,效果与预期一致:

[Dev]> YAML.load(Identity.first.to_yaml)
=> #<Identity id: 1, ...
[Dev]>YAML.load(Identity.first.to_YAML)

=>#原因是,如果你检查延迟的作业结构,存在一个名为

现在对于Ruby with
syck
(只有syck才会出现)作为YAML引擎,每次调用
YAML.load
时,define
YAML\u new
都会被调用,如果从技术上检查该方法,它会尝试使用从对象属性中提取的
id
从数据库中构建对象

那么对于这个

YAML.load(Identity.first.to_YAML)

它内部就是这样做的

Identity.find(1)

但是在你的例子中,
Identity.new
作为no
id
与之关联,因此这是一种反序列化

我认为人们花了这么长时间来回答这个问题的原因是您列出的错误

Delayed::反序列化错误:Delayed::反序列化错误

因为它确实说明了任何信息,说明它确实存在

我认为原因是提交可能,它或多或少是在您发布问题的同时推送的,但可能您仍然在您的机器中使用旧代码,但今年没有报告它

ActiveRecord::RecordNotFound, class: #{klass} , primary key: #{val['attributes'][klass.primary_key]} 
注: 它只发生在
syck
测试出的
pysch
中,该方法根本没有被调用,我想可能是为了向后兼容