2016-11-08 11 views
0

Rails 5アプリケーションで名前空間を使用してリソースを整理しています。Rails 5 - 名前空間モデル

私は、コマンドラインにnamespaceフォルダをgenerateコマンドに追加してリソースを生成しています。

これは名前空間のファイルが保存されているメインフォルダのモデルフォルダ内にフォルダを作成します。

私は名前空間モデルを示唆して他の人から記事を読んでいるので、良いアイデアではありません。

私が現在持っているものの例は次のとおりです。

class Stance::Assessment < ApplicationRecord 

大丈夫、これまで動作しているようです。

名前空間モデルの問題点は何ですか?

問題がある場合は、モデルをフォルダグループに編成できないか、またはモデルクラスの名前を "Stance ::"にする必要がないということですか?

+1

あなたは名前空間のモデルを叩くこれらの投稿をリンクできますか?あなたが慣習に従っているなら、私はそれに対して説得力のある議論を見つけることができません。 'stance'という名前のフォルダの中にファイルをグループ化し、' Stance'の前にクラスを付けたり、モジュールを使います(私が好む)。 –

+0

@AlexandreAngelim https://dhampik.com/blog/rails-admin-scaffold – Mel

答えて

2

"namespacing"というモデルには多少の複雑さが伴います。 Rubyは実際には本当の名前空間を持っていません。むしろカプセル化を提供するモジュールを持っています。

RailsとActiveRecordは、アプリケーションコードをMainオブジェクト(グローバルオブジェクト)に配置することを前提に設計されています。これは悪い習慣のように思えるかもしれませんが、それは非常に単純であり、コンベンションオーバーのコンベンションアプローチでうまくいきます。また、はるかに簡単なオートローディングスキームが可能になり、追加のフォルダ内のすべてのファイルをネストする必要がなくなります。

名前空間には組織的にメリットがありますが、衝突を避けることができます。

  • テーブル接頭辞、my_app_projects_tasksのような生成されたテーブル名を持つカスタム参加記述する必要があるときは本当に不便です。しかし、裏面にはいくつかのマイナーな痛みがあります。
  • ActiveModel::Namingを無効にする必要があります。そのため、多態性ルートヘルパーを使用する場合は、my_app_projects_tasks_pathのようなパスは検索されません。
  • アソシエーションを作成するときに明示的にclass_nameオプションを設定するか、ActiveRecordが定数名を解決する方法を上書きする必要があります。
+0

多形経路ヘルパーポイントの操縦を教えてもらえますか?私は今これを理解しようとしています。http://stackoverflow.com/questions/40518887/rails-5-using-polymorphic-associations-rendering-the-views – Mel