gpt4 book ai didi

ruby-on-rails - 如何确保sqlite不缓存特定的选择查询?

转载 作者:行者123 更新时间:2023-12-03 18:32:01 24 4
gpt4 key购买 nike

我处于将sqlite与ActiveRecord和Rails结合使用的情况(同样,这是JRuby,因此实际上在使用jdbcsqlite适配器,以防万一)。现在,我试图在表attention_seekers中插入一行,但是前提是没有其他类似的行。因此,

unless AttentionSeeker.find(:first, :conditions => {:key_id => key.id, :locale_id => l.id})
item = AttentionSeeker.new(:key_id => key.id, :locale_id => l.id)
item.save
end


这是日志中生成的输出:

CACHE (0.0ms)   SELECT * FROM attention_seekers WHERE (attention_seekers.key_id = 318 AND attention_seekers.locale_id = 20) 
AttentionSeeker Create (1.0ms) INSERT INTO attention_seekers (key_id, locale_id) VALUES(318, 20)
CACHE (0.0ms) SELECT * FROM attention_seekers WHERE (attention_seekers.key_id = 318 AND attention_seekers.locale_id = 20)
AttentionSeeker Create (2.0ms) INSERT INTO attention_seekers (key_id, locale_id) VALUES(318, 20)


如您所见,由于某种原因,即使我插入了会影响查找结果的元素,查找结果也会被缓存。我做错了/如何停止这种行为?

最佳答案

我做了一些挖掘,发现this helpful blog post,并提供了更多here信息。我的解决方案(使用Mike Buckbee建议的验证-谢谢!):

AttentionSeeker.uncached do
item = AttentionSeeker.new(:key_id => key.id, :locale_id => l.id)
item.save
end

关于ruby-on-rails - 如何确保sqlite不缓存特定的选择查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1313470/

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