如何将模型与多个模型相关联?

时间:2012-12-05 05:49:07

标签: ruby-on-rails-3 activerecord associations rails-migrations

我是一个全新的开发者,所以这可能是一个愚蠢的问题。

我正在尝试设置一个webapp,用于存储地理数据的统计信息。

  • 我有一个名为 Stat 的模型,其中包含基本统计信息(中位数,方差,平均值等)的字段。
  • 我为每个地理单位设置了模型城市 Zip Sub-Zip

我想知道的是将Stat模型与Cities,Zips和Sub-Zips相关联;即每个统计模型属于城市,拉链或子拉链,而地理单位(城市,拉链,子拉链)可以有多个统计数据。

如何设置关联和迁移才能执行此操作?我已经查看了Rails指南,但它似乎没有涵盖一个对象可以属于不同模型(但只有一个)的关系。或者我应该以不同的方式设置我的模型?

2 个答案:

答案 0 :(得分:1)

你说:

  

每个stat模型都属于city,zip或sub-zip而a   地理单位(city,zip,sub-zip)可以有多个统计数据。

所以我想你想设置Polymorphic Associations

  

通过多态关联,模型可以属于多个   其他模型,单一协会。

所以你的关联可能是这样的:

class Stat
  belongs_to :statsable, polymorphic: true
end

class City
  has_many :stats, as: :statsable
end

class Zip
  has_many :stats, as: :statsable
end

class Subzip
  has_many :stats, as: :statsable
end

答案 1 :(得分:0)

这可以通过rails关联来完成。 以下链接详细解释了这一点,

http://guides.rubyonrails.org/association_basics.html