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

2番目のクエリをデータベースにヒットさせず、代わりにキャッシュを使用する方法はありますか?データがすでにメモリにあるときに、データベースに再びアクセスするのは少し過剰に思えます。

両方の結果が必要です。Rubyが値を反復処理できることは承知していますが、可能であればActiveRecordを介して反復処理することをお勧めします。私はDjangoのバックグラウンドから来ており、これはfilter()うまくいきました。

Rails2.3を使用しています。

4

1 に答える 1

0

いいえ、条件が違うからです。

しかし、文脈を説明してみてください。なぜ両方のクエリを使用する必要があるのですか?2つ目だけは使えませんか?

両方が必要な場合は、別のクエリを実行する代わりに、Rubyコードで配列をフィルタリングできないのはなぜですか?

于 2012-06-25T23:49:51.710 に答える