こんにちは!Rails初心者の僕が最近、躓いた点がこちらです。
modelクラスのselfって何だ....
#1.クラスメソッドとインスタンスメソッド
modelクラスの中でメソッドを定義する際に、メソッド名の頭にself.を付けるとクラスメソッド
付けないとインスタンスメソッドになります!
article.rb
class Article < ActiveRecord::Base
def hoge #インスタンスメソッド
end
def self.hoge #クラスメソッド
end
end
上のはself.hogeはdef 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
モデルも上手く利用してアプリケーション創っていきたいな...