2010-11-20 6 views
2

私はファンタジーレーシング予測アプリを構築しています。目標は、レースで上位10名のフィニッシャーを予測することです。正しい予測には3点が与えられます。 1ポジション離れた予測には2ポイントが与えられます。 2ポジション離れた予測は1ポイントを与えられます。このコードはモデルに入っていますか?

ユーザの予測と実際の結果を比較し、予測位置の整数を結果位置の整数から減算し、絶対値を取る必要があります。それに応じて3,2,1、または0ポイントを授与することができます。しかし、私はこのコードを私のレールアプリにどこに置くべきかわかりません。

私の腸の本能はモデルにありますが、私はどこから始めるべきかわかりません(私は初心者です)。私は正しい方向に私を助けるためにいくつかのアドバイスが必要です。

ありがとうございます!

答えて

1

はい、それはありません。 modleは、ほとんどのビジネスロジックをカプセル化したい場所です。 Skinny Controller, Fat Modelポストでこれについて詳しく説明していますが、あなたの直感は正しいです。このモデルは、その種の複雑なロジックにとって最適な場所です。

モデル内のメソッドに行う処理をカプセル化することができます。コントローラーやビューで使用する場合は、calculate_awarded_pointsやそれに名前をつけるだけです。コントローラ内のビューとモデルを接続する目的に直接関係しない10行分のコードよりも読みやすくなりました。

0

私は、この論理を2つの場所、すなわちモデルと関連オブザーバに分割します。

実際のポイントフィールドと、関連する結果への参照を予測モデルに格納し、結果が作成されたときの予測スコアを計算するオブザーバーを結果に結び付けます。

詳細情報:ActiveRecord Observers

関連する問題