1. ホーム
  2. ruby-on-rails

[解決済み] Railsのpluckとcollectの違いは何ですか?

2022-06-29 22:37:56

質問

サンプルコードを2つ紹介します。

最初のものは collect :

User.first.gifts.collect(&:id)

2つ目の pluck :

User.first.gifts.pluck(:id)

両者にパフォーマンスなどの違いはあるのでしょうか?

どのように解決するのですか?

pluck はdbレベルです。これは特定のフィールドにのみクエリを実行します。 を参照してください。 .

するとき。

 User.first.gifts.collect(&:id)

すべてのフィールドが読み込まれたオブジェクトがあり、単に id はEnumerableに基づくメソッドのおかげで、単純に取得できます。

というわけで。

  • もし だけ が必要です。 id が必要な場合、Rails 4 では ids : User.first.gifts.ids

  • もし だけ が必要な場合、Rails 4で pluck : User.first.gifts.pluck(:id, :name, ...)

  • もし だけ が必要な場合、Rails 3では pluck : User.first.gifts.pluck(:id)

  • 必要なら 全て フィールドが必要な場合は collect

  • Rails 4でいくつかのフィールドが必要な場合、やはり pluck

  • Rails 3でいくつかのフィールドが必要な場合は selectcollect