Rails协会已经完成了

时间:2015-01-18 11:24:48

标签: ruby-on-rails-4

我无法掌握以下rails关联的详细信息。

has_many通过 has_and_belongs_to_many

这种联想的作用以及对桌子的影响?请帮忙

3 个答案:

答案 0 :(得分:0)

Has_many基本上是说有一件事链接到很多,例如一个类别中有很多产品.Belongs_to基本上是相反的,所以产品属于类别。它们允许您从链接到另一个表的表中检索数据,例如您可以通过该链接从产品表中获取特定产品的类别标题。这有帮助吗?

答案 1 :(得分:0)

来自Choosing Between has_many :through and has_and_belongs_to_many

  

Rails提供了两种不同的方式来声明多对多关系   模型之间。更简单的方法是使用has_and_belongs_to_many,   这允许您直接建立关联:

class Assembly < ActiveRecord::Base
  has_and_belongs_to_many :parts
end

class Part < ActiveRecord::Base
  has_and_belongs_to_many :assemblies
end
     

声明多对多关系的第二种方法是使用   has_many:通过。这通过一个间接地使这种关联   加入模型:

class Assembly < ActiveRecord::Base
  has_many :manifests
  has_many :parts, through: :manifests
end

class Manifest < ActiveRecord::Base
  belongs_to :assembly
  belongs_to :part
end

class Part < ActiveRecord::Base
  has_many :manifests
  has_many :assemblies, through: :manifests
end
     

最简单的经验法则是你应该设置一个has_many   :如果你需要使用关系模型,通过关系   作为一个独立的实体。如果你不需要做任何事情   关系模型,设置一个可能更简单   has_and_belongs_to_many关系(虽然你需要记住   在数据库中创建连接表。)

     

你应该使用has_many:through如果你需要验证,回调,   或连接模型上的额外属性。

让我强调最重要的一句话:

  

最简单的经验法则是,如果需要将关系模型作为独立实体使用,则应设置has_many:through关系。如果您不需要对关系模型执行任何操作,则设置has_and_belongs_to_many关系可能更简单

答案 2 :(得分:0)

... resetForm(form: ngForm){ form.reset(); } ... 使用起来非常简单,但您无法直接访问相关对象,只能保留对两个模型的引用,而不能使用其他内容。

虽然has and belongs to many将使您能够执行user.role之类的操作并获取所有已连接的第二个模型实例的列表。它还使您能够访问特定于第一和第二模型之间关系的数据。

这一切都取决于你是否需要快速简便的东西,比如模型,或者你想建立一个长期项目。我建议您check this out了解更多详情。