ruby on rails 裡pluck和select(map、collect)的區別

來源:互聯網
上載者:User

標籤:

比如有一個users表,要等到user的id數組:

select id from users where age > 20;

要實現在如上sql語句,在rails中有以下幾種寫法:

  1. User.where(‘age > 20‘).select(:id).collect(&:id)
  2. User.where(‘age > 20‘).select(:id).map(&:id)  -> SELECT id FROM `users` WHERE (age < 20)
  3. User.where(‘age > 20‘).pluck(:id)              -> SELECT `users`.`id` FROM `users` WHERE (age < 20)

前兩種方法是一樣的,都是從資料庫中查出資料,然後進行迴圈,從active record的資料集取出id組成數組。

而pluck方法則是只查id欄位,直接返回id的數組,而不是返回active record的資料集,這樣我們就不需要再用迴圈取出id數組。

通常、pluck方法的效率要比上面那兩種辦法高。

在rails4.0以上,pluck可以傳多個欄位作為參數。

Person.pluck(:id, :name) -> [[1, ‘David‘], [2, ‘Jeremy‘], [3, ‘Jose‘]]

ruby on rails 裡pluck和select(map、collect)的區別

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.