Rails => Pluck vs Map

ck100pro
ck100pro
Published in
3 min readFeb 11, 2020

最近在玩資料庫的時候,常常只要撈出Store特定幾個欄位的資料,之前的作法通常是一次把所有Store撈出來,然後在帶到View畫面把想要的欄位顯示出來。

如下面的例子,我只需要Store的id、title,這樣子的做法雖然可以,但還是會撈出一些不需要的欄位(如user_id、created_at之類的)。

而另一種做法就是就是直接用select把要的欄位撈出來就好,如下面的例子。

但這會有一個問題,這樣子的資料型態是一個陣列,裡面有好幾個hash,如下面這樣子。

這樣子要用迴圈撈資料的時候不太方便,要用key去轉出來。

所以我之前最常用的就是用map來撈出我想要的欄位資料,比如下面這個例子。

這個樣子的資料型態,在後續的迴圈上也比較好處理,但這樣還是會有一個問題,由於這個例子裡面是用all把所有Store撈出來變成Active Record物件,然後在用map方法去把資料做處理,這樣子實際上是多做了一個程序。

後來在rails官方網站上有看到用Pluck的方法,如下面這個例子。

我們從sql語法可以看出來,用pluck會直接使用sql語法進去資料庫撈出你要的資料,而這樣子的好處是節省轉成Active Record物件,而且在撈出大量資料的時候可以大幅提昇效能,和節省序多時間。

--

--