Active Record
要旨 find_each を使おう。 batch_size を指定すれば、一度に取得するレコード数を制限できる。 Model.find_each(batch_size: 100) do |model| ~~~ end 詳細 #all は、一度に全てのレコードを取得するので、まずデータベースに負荷がかかってしまう。さらに…
概要 %w[a b c d e].include?('c') == 'c'.in?(%w[a b c d e]) 詳細 Array#include? Ruby 標準のメソッド。一方、 Object#in? は Active Supportを require すると使えるようになるメソッド。 ただし、 Active Support全体を require する必要はなく、下記の…
要旨 ActiveRecord::Relation#count を使っておくのが良い。 size や length もあるが、キャッシュが効いて期待する値を返さない場合があるので、よほどそのような状況ではない限り、使用を避けるのが無難であろう。 やってはいけないのは、ActiveRecord::Re…
例えば、「特定の条件を持つユーザIDだけ欲しい」といった場合に有効。この時、 pluck を使うと戻り値は Array で、 select を使うと ActiveRecord::Relation が返る。 この時、 map を使うのは無駄なメモリを食ったり動作が遅くなったりするので、やっては…