2016-04-13 7 views
0

私はチームに関する多くの選手と統計を持つ野球チームのモデルを持っていたいと思います。テーブルは2つのモデルに属していますか?

同じ統計情報を持つプレーヤーのモデルも必要です。

スタティックステーブルをBaseball ModelとPlayer Modelの両方に属することができますか?

+0

"同じ統計"とは、データを複製してから、それをしないことを意味します。リレーショナルデータベースの全体のポイントは、冗長なデータを避けることです。データを一度保存​​して、必要に応じて参照してください。チームのデータとプレーヤーのデータを分離できなければならないときに、なぜ統計テーブルを共有する必要があると思うのか分かりません。 – MarsAtomic

+0

@MarsAtomic私は両方とも、統計テーブルに自分のエントリが欲しいということを意味しました。プレイヤーとチームの両方が打撃平均、打点、ホームランなどを持っているように – user5478032

+1

あなたは本当に別の質問をしているときに1つの質問をしていると思うことがあります。チームの統計情報は、そのチームに所属するプレイヤーのデータを集計するだけのものではありません。したがって、SQLクエリを使用してオンザフライで計算することができます。 'player_statsからのsum(homers)の選択(team_id = 2、player_status =" active ")この問合せは、IDが2のチームの人事総計を取得します。 – MarsAtomic

答えて

1

多型関連を使用できます。あなたは

class Statistic < ActiveRecord::Base 
    belongs_to :statisticable, polymorphic: true 
end 

野球モデル

class Baseball < ActiveRecord::Base 
    has_many :statistic, as: :statisticable 
end 

プレーヤーモデル

class Player < ActiveRecord::Base 
    has_many :statistic, as: :statisticable 
end 

あなたの移行ファイル統計モデルのhere

統計モデルを参照することができ

class CreateStatistic < ActiveRecord::Migration 
    def change 
    create_table :statistics do |t| 
     t.string :strength 
     t.string :defensive 
     t.string :attack 
     t.references :statisticable, polymorphic: true, index: true 
     t.timestamps null: false 
    end 

    end 
end 
関連する問題