0

私はここで最善の道を見つけようとしています。以前の質問ではこの問題にあまり光を当てることができませんでしたが、それはおそらく私の説明によるものです.一口サイズのチャンクで学習する際の問題

適用範囲

ユーザーが今後の試合のスコアを予測するサッカー予測アプリ。彼らが正しく予測したかどうかに応じて、いくつかのポイントが割り当てられます。各ユーザーはチームを作成し、リーグの一部になります。

現在のモデル

class User
  has_many predictions #prediction model has user_id as FK
  has_many :teams #team model has user_id as FK
  attr_accessible :prediction_id
end    

class Team   
  belongs_to :user
  attr_accessible :team_name, :user_id, :key
end

class Prediction
  has_many fixtures #to allow predictions from multiple users<br> 
  attr_accessible :home_team, :away_team, :home_score, :away_score, :fixture_date, :fixture_id, :user_id
end

class Result
  attr_accessible :home_team, :away_team, :fixture_date, :home_score, :away_score
end

私の質問は、ユーザーの予測から得たポイントを保存するポイントなどの別のモデルが必要ですか? たとえば、ユーザーがスコアを正しく予測した場合、3 ポイントが与えられます。

モデルではPoint、属性があります

result_id, prediction_id, allocated_points

ここで、予測を結果と比較して、ポイントを割り当てることができます..

これに本当に困惑しているので、どんなアドバイスでも大歓迎です

4

2 に答える 2

0

ポイントはモデルであってはならないと思います。ユーザーテーブルの列である必要があります。予測と結果からポイントを計算し、関連付けられたユーザーのポイントを更新する必要があります。

しかし、これはあくまで私の見解であり、完全に間違っている可能性があります。

于 2013-05-12T15:26:02.103 に答える
0

これには正しい/間違った答えがあるとは思いません。各モデルの関連付けと属性を見ずに言うのは難しいですが、まずそれらのポイントを計算することから始めます。

class Predication
  def correct?
    fixture.result == result
  end
end

class User
  def points
    predications.select(&:correct?).size * 3
  end
end

class Team      
  def points
    users.map(&:points).inject(&:+)
  end
end
于 2013-05-12T14:37:31.690 に答える