初期の Rails プロジェクトに取り組んでおり、Rubocopを使用してコード スタイルを分析しています。Ruby のネストされたクラスが Rails のコンテキストでどのように機能するのか、正確に疑問を抱くようになりました。たとえば、私のエンジンには次のモデルがあります。
# app/models/app_core/tenant.rb
module AppCore
class Tenant < ActiveRecord::Base
end
end
そしてコントローラー:
# app/controllers/app_core/tenant/members_controller.rb
module AppCore
class Tenant::MembersController < ApplicationController
end
end
モデルの場合、モジュールはパスと同じで、クラス名はファイル名と同じです。コントローラーの場合、パスの 2 番目の部分である「tenant」はクラス名の一部です。
Rubocopは「コンパクトなスタイルではなく、ネストされたクラス定義を使用する」というTenant::MembersController
行で言っているので、正しく理解すれば...
module AppCore
class Tenant
class MembersController < ApplicationController
end
end
end
...これは違いはありません。
さて、私の質問は、AppCore::Tenant をモデルとして持っているということですが、AppCore::Tenant が再び開かれているように見え、MembersController クラスがネストされたクラスとして追加されています。これは、私の Tenant クラスには常にそのネストされたクラスがあるということですか? モデルとコントローラーのルートに別の名前を付ける必要がありますか? これはまったく問題なく、心配する必要はありませんか? これが何を意味するのか正確にはわかりません。