🐥

Rails で最初のレコードのカラムの値を取得する

2024/08/24に公開

例えば次のように『一番最後に作成されたレコード』を取得する場合に『必要なカラムだけ取得する』ことがあります。

User.create(name: "homu")
User.create(name: "mado")
User.create(name: "mami")

# 作成日でソートしてから limit(1).pluck で『一番最初の要素』を取得する
name, created_at = User.order(created_at: :desc).limit(1).pluck(:name, :created_at).first
puts "#{name}#{created_at} で最後に作成されました"
# => mami が 2024-08-22 14:15:23 UTC で最後に作成されました

こういう『最初の要素を取得する』場合に limit.pluck.first ではなくて .pick が利用できます。

# pick で一番最初のレコードのカラムの値を取得する
name, created_at = User.order(created_at: :desc).pick(:name, :created_at)
puts "#{name}#{created_at} で最後に作成されました"
# => mami が 2024-08-22 14:15:23 UTC で最後に作成されました

これは普通に便利。

GitHubで編集を提案

Discussion