技術ブログ

(技術系中心)基本自分用備忘録なので、あくまで参考程度でお願いします。

クラス/インスタンスメソッドの使い分け方法

クラス/インスタンスメソッドの使い分け方法

railsのモデルファイルを書いていて間違えやすいのが、クラス/インスタンスメソッドの使い分けです。

先に結論

データすべて(モデルそのもの)に対する操作はクラスメソッド。特定のデータに対する操作はインスタンスメソッド

例)Personモデルを定義したと仮定した場合

class Person
  # クラスメソッド
  def self.exists_no_name_person?
    no_name_person_list = Person.where(name: nil)
    no_name_person_list.exits?
  end

  # インスタンスメソッド
  def full_name
    self.first_name + self.last_name
  end
end

# exists_no_name_person?クラスメソッドは全てのPersonデータに対しての処理なのでクラスメソッドになる
Person.exists_no_name_person?

# full_nameインスタンスメソッドは特定のpersonにな対しての処理なのでインスタンスメソッドになる
tanaka = Person.new(name: 'tanaka')
tanaka.full_name

参考:

必要なModelファイルを作成する|RailsとReactでUberEats風SPAアプリケーションをつくってみよう!|Techpit