2012-06-25 56 views
2
> player.records 
Record Load (0.5ms) SELECT * FROM `records` WHERE (`records`.player_id = 1) 

> player.records.first(:conditions => {:metric_id => "IS NOT NULL"}) 
Record Load (0.5ms) SELECT * FROM `records` WHERE (`records`.player_id = 1 AND (`records`.`metric_id` = 'IS NOT NULL')) LIMIT 1 

有沒有辦法讓第二個查詢不命中數據庫,但使用緩存呢?當數據已經在內存中時,再次敲擊數據庫似乎有點過分。在這種情況下可以導軌緩存嗎?

我需要兩個結果。我知道Ruby可以遍歷這些值,但我希望儘可能通過ActiveRecord執行此操作。我來自Django的背景,filter()做得很好。

我正在使用Rails 2.3。

回答

0

不,因爲條件不同。

但嘗試解釋上下文。爲什麼你需要使用這兩個查詢?你不能只用第二個嗎?

如果您同時需要,爲什麼不能用Ruby代碼過濾數組而不是進行另一個查詢?

+0

我可以用Ruby代碼過濾數組,但我寧願不必。我來自一個Django背景,filter()這樣做很好。 – babonk

+0

嚴重的是,有什麼問題'player.records.select {| x | x.metric_id!= nil} [0]'?它對你來說工作得很好,它不會與數據庫有額外的溝通。 – YuriAlbuquerque

相關問題