我有一个非常奇怪的问题,我在数据库中查询最后一个结果,但它显示的是过去某个时间的最后一个结果。这个数据库每小时都会通过rake任务更新,但它似乎不会重新运行查询,而是以某种方式缓存?它只发生在Heroku上,现在当我从我的本地运行它时,这表明它可能与我的环境配置有关。为了让事情变得更奇怪,如果我重置已部署的数据库并将内容推回到其中,则查询会提取正确的数据然后再次变得陈旧...任何想法?它是否在数据库上缓存?
更新:查询为input = IonitTankInput.last
它在我的本地工作得很好但是没有在生产中它取而代之的是抓住数据库几天前知道的最后一条记录而且没有重新检查最新的" last"通过rake任务添加的记录...如果我直接在heroku rails控制台上运行查询,它将返回正确的新添加的最后一条记录。不知道造成这种情况的原因。
为了使事情更奇怪,此查询正在按预期在不同的页面上工作。
更新:好的我修好了,但解决方案毫无意义,除非有人能解释。我改变了行动:
def show
@tank = IonitTank.find(params[:id])
if something
return false
end
@input = @tank.ionit_tank_inputs.last
end
致:
def show
@tank = IonitTank.find(params[:id])
@input = @tank.ionit_tank_inputs.last
if something
blah blah
end
end
奇怪的是if语句没有返回false所以我知道@input被定义但是由于某种原因需要在if语句被检查之前定义...