芋出し画像

【💻】pluckっおなんなんだ(Rails)

Railsのコヌドでよく芋るけど毎回なにやったか忘れちゃうメ゜ッド個人的No.1、pluck。

倚分倧孊受隓たでで孊んだこずのない単語やから、そもそも䜕しおるのかの倧たかなむメヌゞすら぀かないから芚えられないんやな。

ずいうこずでpluckがなんのメ゜ッドなのかだけただメモするだけの蚘事だ( -`ω-)👍🏻

※䜕かの拍子で蚘事に迷い蟌んだ方ぞ。

完党に自分のメモ甚アりトプット蚘事になりたす🙌
読みやすさや完成床・蚘事の信憑性には自信ありたせん( -`ω-)👍🏻

プログラミングに関しおはドが぀くほどの初孊者です。
そんなん圓たり前やろずいう事柄に関しお䞖玀の発芋かのように驚くレベルのため、内容がずんでもなく薄い蚘事もあるかも 。

ずにかく間違っおいおも”自分の蚀葉で”を意識しおおりたす、ご了承ください😖


特定のカラムの倀だけを取埗しおくれるActiveRecordメ゜ッド


簡単に蚀えば↑らしい。Userっおいうモデルがあっお、その䞭のnameカラムだけの倀をただただ扱いたい時、䞋みたいに曞けば配列で返しおくれるみたいなや぀だ。
指定したカラムの倀は党郚取埗しおくるから、この堎合だず、Userに登録されおいる党郚の名前を取り出しおる感じやな。

names = User.pluck(:name)
# => ['Alice', 'Bob', 'Charlie']

カラムは耇数指定もできる。pluck(:カラム名1, : カラム名2)のような感じ。
この堎合戻り倀は二次元配列になる。

user_data = User.pluck(:id, :name)
# => [[1, 'Alice'], [2, 'Bob'], [3, 'Charlie']]


毎床私を救っおいるぎよぎよ蚘事。

今回は倧たかなメ゜ッドの抂芁だけ知れたらOKなので、
倧事そうな芁点だけ抜き取っお終わりや〜

・pluckメ゜ッドが返すのは配列のため、pluckメ゜ッドの埌にメ゜ッドチェヌンで繋げるこずはできない→メ゜ッドチェヌン䜿う堎合はpluckを最埌

・whereやdistinctで条件絞っおから配列取り出せたり、重耇なくせたりする。 

・mapメ゜ッドでも同様の結果を埗るコヌドが曞けるけど
   ãƒ»pluckは、SQLの段階から取埗するカラムのデヌタを絞り蟌んでる
   ãƒ»mapはすべおのデヌタを取埗しお、そこからカラムのデヌタを取埗しおる。
の違いがある。→メモリの䜿甚量が枛る

䞭身で実行されおるSQL文を考えるず、
メモリの倧幅削枛になるこずが倚いんやな

特定のカラムのデヌタしか䜿わない堎面では、pluckメ゜ッド
これがかなりメモリの読み蟌み倉わっおきそうやから気を぀けよう 

逆に既にむンスタンス化したオブゞェクトからデヌタを取埗する堎合は、mapメ゜ッドを䜿った方が、良さそう
mapメ゜ッドはルヌプ凊理内でもSQLの発行が1回だけやから


pluckは特定のカラムの倀を配列にしお返すメ゜ッド以䞊