2012-06-25 55 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

相关问题