表属于两个模型?

时间:2016-04-13 04:12:26

标签: sql ruby-on-rails

我希望有一个棒球队的模型,其中有很多球员和有关球队的统计数据。

我还想要一个具有相同统计数据的玩家的模型。

如何让Statics表同时属于Baseball Model和Player Model?

1 个答案:

答案 0 :(得分:1)

您可以使用多态关联。您可以参考here

统计模型

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

您的统计模型的迁移文件

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