> 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
Есть ли способ сделать второй запрос не попавшим в базу данных, но вместо этого использовать кеш? Кажется немного чрезмерным, чтобы он снова попадал в базу данных, когда данные уже находятся в памяти.Может ли кеш-память Rails в этой ситуации?
Мне нужны оба результата. Я знаю, что Ruby может перебирать значения, но я бы предпочел сделать это через ActiveRecord, если это возможно. Я исхожу из фона Django, где filter()
сделал это просто отлично.
Я использую Rails 2.3.
Я мог бы фильтровать массив с кодом Ruby, но я бы предпочел, чтобы этого не было. Я иду из фона Django, где 'filter()' сделал это просто отлично. – babonk
Серьезно, в чем проблема с 'player.records.select {| x | x.metric_id! = nil} [0] '? Это сработало бы хорошо для вас, и у него не было бы дополнительной связи с базой данных. – YuriAlbuquerque