Rails の Model で self

の理解を後回しにしていたことを思い出した

TL;DR

端的にまとめると

self あり ⇒ クラスメソッド

self なし ⇒ インスタンスメソッド

になる

インスタンスメソッド

特定インスタンスに対して操作するときにはこっち

例えば値の取得や評価など

ex) active?

def active? return false if expires_at.past? true end
Hoge.new().active?

クラスメソッド

当該のクラス(モデル)全体に対して操作するときはこっち

例えば検索やソートなど、特定インスタンスには紐つかずクラス全体への操作

ex) visibles

def self.visibles where(is_visible: true) end
Hoge.visibles

追記)この visibles メソッド、Rails なら scope で実装するのがいい気がする。