我在使用ActiveRecord和Rails使用sqlite的情況下(也是,這是JRuby,所以我實際上使用jdbcsqlite適配器,以防萬一)。現在,我試圖在表中插入一行attention_seekers,但前提是沒有其他類似的行。因此,如何確保sqlite不緩存特定的選擇查詢?
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)
正如你所看到的,由於某種原因,找到的是被緩存,即使我將影響它的元素。我在做什麼錯了/我該如何阻止這種行爲?
真棒喬希,很高興你明白了。 – 2009-08-21 20:59:49