0

我已经阅读了关于关联的指南,但我觉得我还没有完全理解,所以我想问几个问题来确定一下。假设我正在制作一个应用程序,其中将列出世界各地的大城市。我将计划从大陆级别开始并可以过滤掉的视图。所以我会从大陆模型开始。然后是国家模式。现在,在 Continent 模型中,我将关联定义为 has_many :countries。在 Country 模型中,我将使用 belongs_to :continents。我掌握的就这么多。所以我的下一个模型将是州/省的模型。让我们称之为省,因为这在世界范围内更为普遍。所以现在我有了我的省模型,我会使用 belongs_to :country。同样,国家也会有 has_many :provinces。我的第一个问题是,如何描述省与大陆之间的关联?Has_many through 描述了两个模型都有很多的关联。一个省只有一个大陆。Has_one through 描述了通过第三个对象具有一对一关系的对象之间的关系。同样,情况并非如此,因为一个大陆将有许多省份。所以这是我的主要问题..如何通过上下文描述一对多存在的关系。我的第二个问题只是在我稍后添加另一个层(例如县)的情况下询问有关为此编写迁移的提示。但主要问题只是理解如何表达我描述的关系。或者如果他们甚至需要表达。我如何描述省与大陆之间的关联?Has_many through 描述了两个模型都有很多的关联。一个省只有一个大陆。Has_one through 描述了通过第三个对象具有一对一关系的对象之间的关系。同样,情况并非如此,因为一个大陆将有许多省份。所以这是我的主要问题..如何通过上下文描述一对多存在的关系。我的第二个问题只是在我稍后添加另一个层(例如县)的情况下询问有关为此编写迁移的提示。但主要问题只是理解如何表达我描述的关系。或者如果他们甚至需要表达。我如何描述省与大陆之间的关联?Has_many through 描述了两个模型都有很多的关联。一个省只有一个大陆。Has_one through 描述了通过第三个对象具有一对一关系的对象之间的关系。同样,情况并非如此,因为一个大陆将有许多省份。所以这是我的主要问题..如何通过上下文描述一对多存在的关系。我的第二个问题只是在我稍后添加另一个层(例如县)的情况下询问有关为此编写迁移的提示。但主要问题只是理解如何表达我描述的关系。或者如果他们甚至需要表达。Has_one through 描述了通过第三个对象具有一对一关系的对象之间的关系。同样,情况并非如此,因为一个大陆将有许多省份。所以这是我的主要问题..如何通过上下文描述一对多存在的关系。我的第二个问题只是在我稍后添加另一个层(例如县)的情况下询问有关为此编写迁移的提示。但主要问题只是理解如何表达我描述的关系。或者如果他们甚至需要表达。Has_one through 描述了通过第三个对象具有一对一关系的对象之间的关系。同样,情况并非如此,因为一个大陆将有许多省份。所以这是我的主要问题..如何通过上下文描述一对多存在的关系。我的第二个问题只是在我稍后添加另一个层(例如县)的情况下询问有关为此编写迁移的提示。但主要问题只是理解如何表达我描述的关系。或者如果他们甚至需要表达。我的第二个问题只是在我稍后添加另一个层(例如县)的情况下询问有关为此编写迁移的提示。但主要问题只是理解如何表达我描述的关系。或者如果他们甚至需要表达。我的第二个问题只是在我稍后添加另一个层(例如县)的情况下询问有关为此编写迁移的提示。但主要问题只是理解如何表达我描述的关系。或者如果他们甚至需要表达。

ETA:如果我要使用 has_many_through 关联,我是否必须创建一个连接表(continent_province),或者我可以简单地使用国家表,即 has_many :provinces -> through :countries?

4

1 回答 1

1

不要太纠结于某个文档中的几个小例子。关系支持非常灵活。最后,试一试——我有一个测试器应用程序,其中包含各种概念证明——这就是它的目的。


class Project
  # one-to-many 
  has_many :scenarios
  # linking through scenarios
  has_many :unittests, :through => :scenarios
  # polymorphic relationship, everything can be relation to one or more appls
  has_many :appllinks, :as => :applinkable, :dependent => :destroy
  has_many :appls, :through => :appllinks, :order => 'name'
  blah blah blah
end

class Scenario
  # many-to-one 
  belongs_to :project
  # many-to-many
  has_many :scenariotests 
  has_many :unittests, :through => :scenariotests
  # polymorphic relationship, everything can be relation to one or more appls
  has_many :appllinks, :as => :applinkable, :dependent => :destroy
  has_many :appls, :through => :appllinks, :order => 'name'
  blah blah blah
end

class Unittest
  # many-to-many
  has_many :scenariotests
  has_many :scenarios, :through => :scenariotests
  # polymorphic relationship, everything can be relation to one or more appls
  has_many :appllinks, :as => :applinkable, :dependent => :destroy
  has_many :appls, :through => :appllinks, :order => 'name'
  blah blah blah
end
于 2013-10-03T02:52:31.737 回答