0

我是一个全新的开发者,所以这可能是一个愚蠢的问题。如何将模型与多个模型关联?

我想设置一个web应用程序,它将存储地理数据的统计信息。

  • 我有一个名为统计这对于基本统计信息(中位数,方差,平均等)领域模型。
  • 我已经设置模型的每个地理单元邮编子邮编

我想知道的是与城市,拉链,和子拉链的统计模型关联;即每个属性模型都属于城市,邮政编码或子邮政编码,而地理单位(城市,邮政编码,子邮政编码)可以具有多个属性。

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

回答

1

你说:

每一个统计模型属于任何城市,邮递,或子拉链而 地理单元(市,邮编,子邮编)可以有多个统计。

所以我想你想设置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 
+0

感谢这正是我正在寻找的! – slykat

0

这可以通过rails关联来完成。 下面的链接解释你这细节,

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

+0

您好,我看过了这份文件,我不知道如何添加的关联。在City,Zip和Sub-Zip模型中,我相信我使用了** has_one **,但我没有在** Stat **模型中使用什么。如果Stat只属于City,我会使用** belongs_to **,但在这种情况下,它可能属于许多模型。 – slykat

+0

如果stat和其他模型像城市有多对多的关联,那么您必须使用has_and_belongs_to_many关联。这可以通过连接表来完成。在同一链接中查找此内容。 –