我完全有可能做错了什么,但是!
这是故事。我有一个标准的初学者级别的 RoR 设置 (4.2) 和 ActiveJob 作业。
我的一项工作调用了已传入的记录上的一个方法,该方法旨在修改该记录。到现在还挺正常的。它看起来像这样:
class GenericScraperJob < ActiveJob::Base
def perform(record)
# perform job with record data
record.update_myself!
end
end
然后update_myself!
方法如下所示:
class RecordInDb < ActiveRecord::Base
def update_myself!
thisis_a_column = newvalue
self.save!
end
end
现在这是个谜——当我运行测试并检查时,fixture_instance.thisis_a_column
测试newvalue
通过了。当我启动我的应用程序并查看数据库中发生的情况时,它没有按预期更新。
但如果我说self.thisis_a_column = newvalue
,那么它在任何地方都能正常工作。
我确定我重新加载了我的夹具......我是这样做的:fixture_instance = RecordinDb.find(fixture_inst.id)
就好像 ActiveRecord 实例中的绑定会根据实例化的时间发生变化。在我的测试中,看起来符号被视为可能发送的消息,self
但在工作中,它们被视为本地名称。为什么?