class << self について
通常、モデル内(class)にdef~という形で書くと、 それはインスタンスメソッドとなる。インスタンスメソッドはそのモデル内で使用できる。
ではモデル内でよく見る「class << self」とは何か?
class << self def クラスメソッド end end
上記のような場合、 class<<selfからend内に書かれたメソッドはクラスメソッドとなる。
クラスメソッドとして定義したい場合、他に
def self.メソッド end
のように、メソッドの前にself.を書く方法がある。 両者とも効果は同じだが、何度もクラスメソッドを書く場合は、前者のように一段ネストした方がよい。
Rubyスタイルガイドでは、後者のようにself.メソッドという書き方が推奨されている・・・が、状況に応じて選べばいいのではないかと思った。