Railsでclassをネームスペースとして使うべきではない
Why you Should not use a Class as a Namespace in Rails Applications | The RubyMine Blog
Ruby で class や module をネストして書く場合と Foo::Bar のようにコンパクトに書く場合の挙動の違いについて - Qiita
classはnamespaceが[Class, Object, Kernel, BaseObject]だが、moduleはnamespaceが[Module]のみ。
code:rb
class Hoge
def self.zoo;
end
class Foo; class Bar; end end
Foo::Hoge.zoo // => Foo namespaceにはないがClass, Object, Kernel, BaseObjectのObjectに定義されているHoge.zooがルックアップされて呼ばれる。
code:ruby
class Hoge
def self.zoo;
end
module Foo; class Bar; end end
Foo::Hoge.zoo // => エラーになる。moduleの場合はFooのnamespaceのみルックアップするのでHogeが存在せずエラー
Rails