1

私は新しい RoR で、自分のアプリを構成する方法を理解できないようです。

garbを使用して Google アナリティクスからデータを取得するアプリがあります。データを処理した後、アプリはReportモデルにデータを入力し、ユーザーにレポートを表示します。

現在、懸念事項を使用して Google アナリティクスのロジックを分離しています。私の懸念フォルダーにはGoogleAnalytics、データのプルを担当するモジュールがあります。ReportモデルにはモジュールGoogleAnalyticsが含まれています。モデルの数値処理を行う前にReport、データをクリーンアップして再フォーマットする必要があります。GoogleAnalyticsこれはモジュールまたはヘルパーの責任である必要がありますか?

サードパーティのサービスを含めるためのより良い方法はありますか?

4

1 に答える 1

1

再フォーマットは、Google アナリティクスからデータを引き出す責任があるものは何でも続行する必要があります。アプリの残りの部分は、Google アナリティクスがデータを返す方法の形式を知る必要はありません。モジュールは、それを適切な標準インターフェースに変換し、他のすべての人からそのすべてを隠す必要があります。

また、これをモジュールではなくサービス オブジェクトに入れることを強く検討します。オブジェクトのメソッドを呼び出すときに、そのメソッドがどこで定義されているかわからないため、モジュールを含めると面倒になります。私がこのパターンを使用するのは、同じモジュールを他の多くのモデルに組み込んでおり、それが真の DRY プレイであった場合に限られます。

サービス オブジェクトは次のようになります (データをプルするために使用する必要があるパラメーターによって異なります)。

class GoogleAnalyticsDataFetcher

  attr_accessor :data

  def new ga_id
    @ga_id = ga_id
  end

  def fetch
    @data = do_some_stuff
  end

end

Report次に、コントローラーから呼び出すか、モデル内のどこかにラップすることができます。次に行っGoogleAnalyticsDataFetcher.new(id).fetchてみると、何が起こっていて、どこで定義されているかが非常に明白です。

于 2013-05-11T07:19:31.323 に答える