LoginSignup
235
178

More than 5 years have passed since last update.

Railsのmodelクラスのselfが曖昧だったので

Last updated at Posted at 2016-06-16

こんにちは!Rails初心者の僕が最近、躓いた点がこちらです。

modelクラスのselfって何だ....

1.クラスメソッドとインスタンスメソッド

modelクラスの中でメソッドを定義する際に、メソッド名の頭にself.を付けるとクラスメソッド
付けないとインスタンスメソッドになります!

article.rb
class Article < ActiveRecord::Base
  def hoge         #インスタンスメソッド
  end

  def self.hoge    #クラスメソッド
  end
end

上のはself.hogedef Article.hogeと同じ意味ですね!

2.使い分けについて

インスタンスメソッドはそれぞれのインスタンスに対して参照などをするメソッドとして使います!

クラスメソッドはmodelクラスのレコードを検索するなどの用途や作成されたインスタンスの数を数えるなど、個々のインスタンスには紐付けずクラスに対して働きかけるメソッドです!

3.メソッド内でselfを使用する場合

クラスメソッド内でselfを使うとクラスを指し、インスタンスメソッド内でselfはそのインスタンスになります!

article.rb
class Article < ActiveRecord::Base
  def hoge       #インスタンスメソッド
  end

  def self.hoge  #クラスメソッド
  end

  def pdf       #インスタンスメソッド
    self.hoge        #インスタンスメソッドのhogeが呼ばれる
    hoge             #インスタンスメソッドのhogeが呼ばれる
    self.class.hoge  #こうするとクラスメソッドのhogeを呼べる
  end

  def self.pdf  #クラスメソッド
    self.hoge        #クラスメソッドのhogeが呼ばれる
    hoge             #クラスメソッドのhogeが呼ばれる
  end
end

モデルも上手く利用してアプリケーション創っていきたいな...

235
178
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
235
178