在Ruby on rails应用程序中,我的ActiveRecordModel遇到了一个奇怪的行为.每次我访问该模型时,它似乎都返回相同的对象实例.我不确定这是标准行为还是我的实现的潜在问题.
情况是这样的:
我有一个继承自ApplicationRecord
的MyModel
类.在这个类中,我定义了两个类方法:test
和test2
.test
方法基于特定条件过滤MyModel
条记录,然后调用test2
.test2
方法遍历集合,更新每条记录,然后try 按其ID查找相同的记录.
class MyModel < ApplicationRecord
def self.test
MyModel.where(some_column: "A").test2
end
def self.test2
all.each do |my_model|
my_model.update(some_column: "B")
MyModel.find(my_model.id)
end
end
end
然而,在这个过程中,我遇到了一个ActiveRecord::RecordNotFound
例外,这似乎不寻常.例外消息为:
ActiveRecord::RecordNotFound (Couldn't find MyModel with 'id'='the_id_of_record' [WHERE "my_models"."some_column" = $1])
该错误表明,在更新记录后,后续的find
操作无法找到该记录.我正在try 理解这是由于某种ActiveRecord缓存机制还是我方法中的缺陷造成的预期行为.此外,对于如何有效地处理这种情况,如果有任何见解或建议,我将非常感激.