0

私はいつも、post.rb、post_comment.rb、post_rating.rb などの名前空間を持つ同じフォルダー内の 40 の異なるモデルに行き詰まっているようです。レールでモジュールのようなものを作成し、別の投稿ですべての名前空間を切り離す方法はありますか?ディレクトリ?(このディレクトリには、さまざまなコントローラーとビューも含まれる場合があります)。

Rails Engines は有望に思えますが、他に見逃しているものがあるのではないでしょうか?

プロジェクトの全体像が把握しやすくなり、新しい協力者として参加しやすくなると思います。

反対意見があれば言ってください!

4

3 に答える 3

3

名前空間を使用します。

command を実行するrails g scaffold blog/postと、Blog 名前空間に Post が生成されます。

アプリ/モデル/blog.rb

module Blog
  def self.table_name_prefix
    'blog_'
  end
end

アプリ/モデル/ブログ/post.rb

class Blog::Post < ActiveRecord::Base
  has_and_belongs_to_many :categories
end

アプリ/モデル/ブログ/category.rb

class Blog::Category < ActiveRecord::Base
  has_and_belongs_to_many :posts
end
于 2013-09-27T18:33:48.670 に答える
1

モデリングに問題があるようです。

コメントはコメントです。投稿にはコメントを付けることができ、写真にはコメントを付けることができます。しかし、post_comment や photo_comment のようなモデルを使用することは、絶対にお勧めできません。まあ、問題の「post_comment」しか見えませんが、そういう理由で名前をつけているんでしょうね。

同様の機能を備えたこれらのモデルをフォローして作業するのに忙しいでしょう。次に、それらのコントローラー、ビューです。「post_rating」などについても同様です。

40 以上のモデルが多すぎるとは言えません。しかし、新しい Basecamp には 50 以上のモデルがあり、Dispora にはサブフォルダーのない 30 以上のモデルがあるため、アプリのアーキテクチャを見直して一部を削減する価値があるかもしれません。

「写真」などに「コメント」、「評価」を使用する予定がある場合は、名前を直接使用して、関連付け、ポリモーフィック、モジュールを計画してコードを DRY することができます。

于 2013-09-27T18:46:23.393 に答える