0

データを取得してレポートを生成するために使用する多くのモデルがあります。

レポートを保存する必要はありません。つまり、アクティブなレコードではありません。

しかし確かに、レポートのデータを生成するコードは 80 行ほどあります。

これらの行はどこに配置すればよいですか?

それらは現在コントローラーにありますが、コントローラーは薄いはずなので、それが最適な場所かどうかはわかりません。

4

4 に答える 4

12

app に というディレクトリを作成し、reportsすべてのレポートをそこに置きます。

ファイル名とクラスが通常の規則に従っている限り、Rails の app ディレクトリ内のすべてのものを見つけることができます。

たとえば、 に次のものがあるとしますapp/reports/example_report.rb

class ExampleReport
  def initialize
    ...
  end
end

コントローラーから次のように使用できます。

class SomethingController < ApplicationController
  def something
    example = ExampleReport.new
    ...
  end
end

モデルに依存するレポートは、アプリケーションのドメインの一部と見なされるため、app ディレクトリをお勧めします。アプリにサブディレクトリを簡単に追加できるということは、アプリケーション内のさまざまな役割の論理的な分離を維持できることを意味します。何かの実装がどこにあるかを推測するのは難しくありません。コントローラは にapp/controllers、モデルは にapp/modelsあるので、レポートは にあることになりますapp/reports。たとえば、汎用サービス クラスをアプリに追加する場合、それらはapp/services.

対照的に、それらは一般的な方法で機能できないため、lib には属しません。この点をさらに詳しく説明すると、どのRails プロジェクトでも使用されると想定できるコードのみが lib ディレクトリに属します。

于 2012-11-01T14:54:49.733 に答える
0

そのようなものはヘルパーメソッドに属すると思います。

于 2012-11-01T14:45:21.097 に答える
0

永続性に関連付けられていないビジネスロジックがある場合は、ActiveRecordから継承せずにモデルに配置できます。見る:

于 2012-11-01T14:51:21.513 に答える
-1

Helpersそのコードを置くのに良い場所であるはずです、

また、データのフェッチ/処理に関連する純粋なロジックのコードが引き続きmodel

于 2012-11-01T14:48:32.327 に答える