はじめに
本記事は、プログラミング初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。
クラスメソッドとインスタンスメソッドの使い分け
クラスメソッドとインスタンスメソッドの違い
クラスメソッドとインスタンスメソッドの違いは
- メソッドの記述方法
- メソッドの呼び出し方法
です。
メソッドの記述方法
クラスメソッドの場合には以下のようにメソッド名の頭にself
を記述します。
def self.exists_no_name_user?
no_name_user_list = User.where(name: nil)
no_name_user_list.exits?
end
インスタンスメソッドの場合には以下のようにself
のない形になります。
def full_name
self.first_name + self.last_name
end
メソッドの呼び出し方法
クラスメソッドはクラス名.クラスメソッド
のように記述し、クラスに対してメソッドを呼び出します。
User.self.exists_no_name_user?
インスタンスメソッドはインスタンス名.インスタンスメソッド
のようにインスタンスに対し、メソッドを呼び出します。
kato = User.new(name: 'kato')
kato.full_name
クラスメソッドとインスタンスメソッドの使い分け
クラスメソッドの特定のインスタンスに対して実行したいメソッドはインスタンスメソッドで定義し、クラス全体に対して何等かの処理を行いたい場合に使用します。