我无法掌握以下rails关联的详细信息。
has_many通过 has_and_belongs_to_many
这种联想的作用以及对桌子的影响?请帮忙
答案 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了解更多详情。