【发布时间】:2015-07-01 19:41:08
【问题描述】:
完全有可能是我做错了,但是!
故事是这样的。我有一个标准的初学者级别的 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 的消息,但在工作中,它们被视为本地名称。为什么?
【问题讨论】:
标签: ruby-on-rails rails-activerecord rails-activejob