0

シナリオ

イベントをサード パーティにログ記録するアプリケーションがあります ( Gabbaをモデルに混合して利用するカスタム モジュールを介して)。イベントはモデルで生成されますが、イベントを生成するためのサーバー側コードは、現在のリクエストの Cookie にアクセスする必要があります。

MVCの問題

これは、モデルがコントローラーに含まれるデータを必要とする問題の特殊化です。MVC に忠実であるため、モデルはコントローラーにアクセスできません。私が見た答えは、引数として必要な値をモデルに渡すことです。ほとんどの場合、私はそのアプローチに同意しますが、モデルがイベントを生成するかどうかは一般的に不明であり、コントローラーの関心事ではないため、ここでの最善の解決策ではないと思います。

具体的な例については、次のとおりです。

「ユーザー」モデルに「作成」という静的メソッドがあると想像してください。UsersController は、ユーザー ハッシュを使用して create メソッドを呼び出します。create メソッドは、「ユーザーが作成した」イベントを Gabba に公開しようとしていますが、現在のリクエストの Google アナリティクス Cookie を解決する必要があります。 Cookie を User#create に送信するのは適切ではないようです

私が考えたのは:

  1. メトリクス モジュールが必要とする Cookie 値を、モデルがアクセスできるある種のグローバル データ ストアに配置します。(どこが一番いいですか?)
  2. イベントをある種のストアに配置し、リクエストの処理の最後にコントローラーにイベント コードを実行させます。
4

0 に答える 0