アクション、メソッドとインスタンスメソッド、クラスメソッドの違い

[アクション、メソッドとインスタンスメソッド、クラスメソッドの違い]


[アクション]
ルーティングによりリクエストを受けた時に実行される処理のこと。(コントローラに記載する。)
アクションとは、コントローラクラスのメソッドの事。


[メソッド]
処理をまとめて、その処理のかたまりに名前を付けたもの。


[インスタンスメソッド]
クラスにメソッド(railsだとモデル)を記載するとインスタンスメソッドになる。 インスタンスメソッドは、そのクラスのインスタンスに対して使うメソッド。 以下のように[modelsファイル]に定義して以下のように使う。

[app/models/user.rb]

def own?(object)
    id == object.user_id
end
[app/views ファイル]

<% if current_user.own?(board) %>

# current_userをレシーバとして引数に(board)を渡して使う。


[クラスメソッド]
クラスに定義するメソッド。 クラスメソッドは、クラスの中でないと使えない。(以下参照)

class User

  def put_user
    puts "太郎" + "一郎" + "二郎"
  end

end

put_user   # クラスの外でメソッドを使うとエラーになる。

クラスメソッドをクラスの外で使う方法は、以下のようになる。

class User

  def self.put_user
    puts "太郎" + "一郎" + "二郎"
  end

end

User.put_user  # クラスメソッドをクラスの外で使えるようにする為に、メソッド名の前に[self.]を加えて、呼び出す時は、[クラス名.メソッド名]とする。

参考記事:

メソッドとクラスメソッドとインスタンスメソッドが曖昧だった - Qiita