gpt4 book ai didi

Ruby block - NoMethodError : undefined method `-' for nil:NilClass

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:01 25 4
gpt4 key购买 nike

开始使用 Rails 时,我遇到了 block 操作。我想遍历模型并通过计算两个日期时间字段之间的差异来更新新字段的整数值。在控制台中执行此操作:

MyModel.all.each do |m|
m.new_integer_field = m.existing_datetime_field - m.parent_object.existing_datetime_field
m.save!
end

结果是

 NoMethodError: undefined method `-' for nil:NilClass

如果我这样做,它会在一条记录上起作用:

m = MyModel.find(1)
m.new_integer_field = m.existing_datetime_field - m.parent_object.existing_datetime_field
m.save

我想这是一个基本的语法问题,但找不到明显的解释。感谢您提出一些建议。

最佳答案

其中一个实例中的 m.existing_datetime_field 为 nil,因此该操作无效。如果不确定,您需要检查 nil 值:

MyModel.all.each do |m|
unless m.existing_datetime_field == nil
m.new_integer_field = m.existing_datetime_field - m.parent_object.existing_datetime_field
m.save!
end

关于Ruby block - NoMethodError : undefined method `-' for nil:NilClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14303218/

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