クラス変数と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
が存在するのでしょうか?