Railsは比較的新しいので、数人の友人がnflゲームをハンディキャップするためのシンプルなRailsアプリに取り組んでいます。
ホームチーム、ビジター、start_timeなどのスポーツゲームに関する情報と、そのゲームのハンディキャップに関連する情報(お気に入り、アンダードッグ、合計など)をモデル化するアクティブレコードモデルを作成しています。
基本的に重複した情報を保存しているこれらのフィールドのいくつかのために、これは厄介な感じがします(たとえば、チームは常にhome_teamまたはvisitorであり、常にお気に入りまたはアンダードッグです)
したがって、私のモデルは次のようになります。
create_table "games", :force => true do |t|
t.integer "week"
t.string "home_team"
t.string "visitor_team"
t.string "favorite"
t.decimal "line"
t.decimal "total"
t.string "kickoff"
t.string "status" #['open', 'completed']
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
モデルをできるだけ軽くするために、必要なフィールド(ホームチーム、訪問者、お気に入り、合計)のみを定義し、ゲームモデルにいくつかの簡単なメソッドを記述して、マッチアップに関する他の有用な情報を返します。モデル内で2回チームを組む(1回はアンダードッグ/お気に入りとホーム/アウェイ)
def underdog
teams = [self.home_team, self.visitor_team]
teams.each do |team|
return team if team != self.favorite
end
end
これは機能しますが、ゲーム情報用に個別のモデルを作成し(そして、ゲームモデル自体を最小限に抑える)、has_many =>:throughを使用するか、他のアプローチを試してみる方が理にかなっているのかどうかを議論していました。セットアップは、同じテーブルに重複する情報を格納するのが正しいとは思えません。任意の提案または感謝します。