7

最近、RoR開発者でもある友人と話し合いました。Railsモデルをどのように管理するかについて議論しました。個人的には、ルートモデル(ユーザー、記事、請求書など)のみをデフォルトの名前空間に残し、依存モデルはルートの名前でモジュール(ユーザー::プロファイル、ユーザー::アクティビティなど)に移動します。それらが関連付けられているモデル。

一方、user_profile、user_activityなどと呼ばれるデフォルトの名前空間に100個のモデルがあるプロジェクトをたくさん見ました。Java(Spring)の開発から判断すると、Javaコミュニティはクラスをパッケージに編成し、論理的にグループ化する傾向があります。これは非常に魅力的です。

したがって、問題は次のとおりです。モジュールでモデルをグループ化することに欠点はありますか(リレーション定義の余分な:class_nameを除く)、人々が通常それを行わない特定の理由はありますか?

4

1 に答える 1

4

名前空間には利点がありますが、モデル全体に​​例外を追加する必要があります。Foo :: Barは、アソシエーションのテーブル名を前提としていますが、bars代わりに使用することをお勧めします。bar_idfoo_barsfoo_bar_id

これについて本当に強く感じている場合は、これを修正するアドオンがあるかどうかを確認するか、修正する独自の拡張機能を実装することをお勧めします。

私が名前空間を使用した唯一のケースは、煩わしいのでルートレベルのモデル名を主張したくないサードパーティのアプリケーションで使用されるアドオンの場合です。この場合の余分な努力は価値があります。

グループ化されていない100以上のモデルファイルを表示することに悩まされている場合は、グループ化されていない100以上のテーブルを表示することにも同じように悩まされるでしょう。これは、通常、修正できないものです。

コントローラーは非常に自然にグループ化するのに役立ちますが、モデルは、少なくともストックActiveRecordでは、それほど簡単には対応できません。

于 2012-03-28T19:06:25.613 に答える