クラス変数とcattr_accessorの違いは?
前置き(クラス変数 vs class_attribute)
Railsでクラス変数(@@hoge)を使うと、RubyMineが
Using of class variables in Ruby is considered to be a bad code style.
と警告を出しました。
調べてみると
- https://stackoverflow.com/a/10614333/1979953
- これはMUST!ActiveSupport の Class#class_attribute を使おう! - Qiita
上記記事などを発見しました。
簡単にまとめると、クラス変数では継承した場合にクラス変数を共有しており自然ではないので共有しないclass_attributeを使おうということのようです。
クラス変数 vs class_attribute vs cattr_accessor
クラス変数とclass_attributeの違いはわかりましたが
Coderwall | cattr_accessor vs class_attribute
を読む限りクラス変数とcattr_accessorの挙動(親クラスのクラス変数を共有している)で同じように思います。
わざわざ何故cattr_accessorが存在するのでしょうか?
