関連先のidだけ取得する便利メソッド【Rails】

June 26, 2022

ユーザーが持ってる〇〇(例えば作品)の id を取得したいときがある。

コード的には下記の状態。

class User < ApplicationRecord
  has_many :works
end
class Work < ApplicationRecord
  belongs_to :user
end

ひとつは pluck を使う方法がある。 (user = User.first)

user.works.pluck(:id) #=> [1,2,3]

これを一撃で取得するメソッドがこちら。

user.work_ids #=> [1,2,3]

has_many すると「has_many しているテーブルの単数形_ids」というメソッドが生えるみたい。便利!

参考: has_many (ActiveRecord::Associations::ClassMethods) - APIdock https://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_many

collection_singular_ids
  Returns an array of the associated objects’ ids

(了)