Skip to content

Instantly share code, notes, and snippets.

@onigra
Created November 28, 2013 04:20
Show Gist options
  • Save onigra/7687207 to your computer and use it in GitHub Desktop.
Save onigra/7687207 to your computer and use it in GitHub Desktop.
クラスメソッドとインスタンスメソッドの違いの上司の解説
  • インスタンスメソッドは「インスタンスに対する操作」
  • クラスメソッドは「モデルに対する操作」or「集合に対する操作」

って感じかな。

たとえば class Employee があったとして、
「従業員を退社させる」(従業員インスタンスに対する操作)なら

x = Employee.find("hagi")
x.go_back_home!

だろうけど、
「退社した従業員を捜す」(集合に対する操作)なら

x = Employee.search("not in office")

じゃないかなと。 あとは「入社処理」(モデルに対する操作)として

x = Employee.join(:id => 201311003, :name => "hagi")
x.go_back_home_now!

みたいなのも。
これは普通にnewして設定でもいいかもしれないけど、それだと「未だ従業員じゃない
Employeeインスタンス」を許可するモデルになると、ちょっと気持ち悪い。

x = Employee.new
x.id = 201311003
x.name = "hagi"

未だ従業員じゃない従業員インスタンスに入社メソッド投げるのも、なんかキモい。

x.join :id => 201311003, :name => "hagi"

とか。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment