Rails:嵌套多态自联接协会?

问题描述 投票:0回答:1

在多态关联上,有两个引号说明了它们如何连接两个或多个模型。

[通过多态关联,模型可以属于多个其他模型,在单个关联上。

来源:https://guides.rubyonrails.org/v5.2/association_basics.html#polymorphic-associations

但是我们不想将一个模型与另一个任意模型相关联,我们想要拥有一个[[任何与其自身相关联的任意模型。] >>但是,除了reflexivity关系之外,我们还想要是nesting从《自连接协会指南》中给出的示例开始,>>

class Employee < ApplicationRecord has_many :subordinates, class_name: "Employee", foreign_key: "manager_id" belongs_to :manager, class_name: "Employee" end

有没有一种产生嵌套的多态自联接关联的方法

? (听起来像“少年变种忍者乌龟”一样大胆,戴上头巾并在任何情况下都以意大利别名定购比萨饼。)
例如,可以包含多个模型的树吗?

我仍然对:foreign_key约束,:polymorphic-选项和reference类型以及它们产生什么/如何协同工作还不确定。他们似乎都做大致相同。就是他们的迁移。即,使用一个ID为相同类的另一个实例创建一个字段,或者使用table_name(string)和某个instance_id(BigInt)创建两个字段。但是他们的合作多么微妙,我仍然缺乏理解。

如果我们将代码打包到module中,我们至少不能将base中的self.included(base)参数用于class_name键,而已将base.name已经使用]

在多态关联上,有两个引号说明了它们如何连接两个或多个模型。使用多态关联,一个模型可以在一个关联上属于一个以上的其他模型。 ...

这样的关联是否正确?

has_many ":child_#{base.name.snakecase.downcase.pluralize}".to_sym, class_name: base.name, foreign_key: "parent_#{base.name.snakecase.downcase.singularize}_id" belongs_to ":parent_#{base.snakecase.name.downcase.pluralize}".to_sym, class_name: base.name has_many "#{base.name.snakecase.downcase.pluralize}".to_sym as: :nestable belongs_to :nestable, polymorphic: true

nested polymorphic-associations self-join
1个回答
0
投票
这样的关联是否正确?
© www.soinside.com 2019 - 2024. All rights reserved.