Rails文档很好地解释了如何处理只需要has_many-belongs_to关系的自连接。在本例中,一个雇员(作为经理)可以有许多雇员(每个雇员都是下属)。
但是,如何处理has_many has_many自加入(我听说这被称为双向循环关联)?
例如,您如何处理员工可以有许多下属作为经理的情况,也可以有许多经理作为下属的情况?
或者,换句话说,一个用户在哪里可以关注很多用户,被很多用户关注?
一个用户可以有很多:
下面是用户的代码。rb可能看起来:
class User < ActiveRecord::Base
# follower_follows "names" the Follow join table for accessing through the follower association
has_many :follower_follows, foreign_key: :followee_id, class_name: "Follow"
# source: :follower matches with the belong_to :follower identification in the Follow model
has_many :followers, through: :follower_follows, source: :follower
# followee_follows "names" the Follow join table for accessing through the followee association
has_many :followee_follows, foreign_key: :follower_id, class_name: "Follow"
# source: :followee matches with the belong_to :followee identification in the Follow model
has_many :followees, through: :followee_follows, source: :followee
end
下面是follow.rb的代码:
class Follow < ActiveRecord::Base
belongs_to :follower, foreign_key: "follower_id", class_name: "User"
belongs_to :followee, foreign_key: "followee_id", class_name: "User"
end
需要注意的最重要的事情可能是user.rb中的术语< code>:follower_follows和< code >:followeee _ follows 。以一个普通(非循环)关联为例,一个团队可能有许多< code >球员到< code >:合同。这对于一个玩家来说没有什么不同,他可能有很多< code>:teams到< code>:contracts(在这个玩家的职业生涯中)。
但是在这种情况下,如果只有一个命名模型存在(即用户),相同地命名通过:关系(例如通过::跟随
)将导致连接表的不同用例(或接入点)的命名冲突。:follower_follows
和:followee_follows
是为了避免这种命名冲突而创建的。
现在,一个用户可以有许多:follower
到:follower_follows
和许多:folowee
:folowee_follows:
问题内容: 我有三个表:应用程序,权限和applications_permissions 对于应用程序,有两类:免费和商业类(价格=‘0’和价格!=‘0’) 现在,我想为每个许可都知道有多少百分比的应用程序引用了它。而这两个类别 自由: 商业的: 我已经计算出以下查询,但其中不包含没有应用程序的权限ID:/ 我该怎么做呢?我已经尝试了几个小时了(该查询,其他联接),但这使我难以捉摸:/ 问题答案:
基本上,我想知道如果我有topic1和topic2会发生什么,因为topic1可以有N个topic2元素。 Topic1是用户的事件,topic2是该用户的配置。作为第一步,我将通过key匹配它们,从topic2中过滤掉不属于该用户的配置,但我仍然有多个匹配项。我需要向topic2添加更多过滤器来找到精确的匹配项,但我不知道在按key连接之后是否可以这样做。 我读到这个:Kafka Stream和
问题内容: 我们已经为此苦苦挣扎了几天,并在网络上进行了大量搜索。 我们试图弄清楚条目如何以Django形式保存到许多字段。 例如,我们有一个新闻模型,该模型与图像具有多对多的关系。当我们将图像添加到新闻文章中时,例如ID为10、2、14的图像,我们可以看到保存新闻文章表单时的帖子值如下: photos 10 photos 2 photos 14 当我们查看多对多交叉表时,顺序没有保留。我们看不到
我有4个rdd类型的RDD:((int,int,int),values),我的rdds是 如何加入RDD,比如rdd1加入“A”上的rdd2;rdd1加入“B”上的rdd2;rdd1加入“C”上的rdd3 那么在Scala中的输出是? 例 输出应该是
我看过这些网站: python相对导入示例代码不起作用 第十亿次相对进口 https://peps.python.org/pep-0328/ Python包:相对导入 Python中的相对导入 并且加载了更多我没有展示的内容,但是它们(答案/代码)由于某种原因无法相对导入其他Python“模块”。而且,我总是有这样一个永远重复出现的错误:< code>ImportError:在没有已知父包的情况下
问题内容: 好的,所以这可能是一个琐碎的问题,但是我在可视化和理解差异以及何时使用它们方面遇到困难。对于诸如单向和双向映射之类的概念如何影响一对多/多对多关系,我也还不清楚。我现在正在使用Hibernate,因此任何与ORM相关的解释都将有所帮助。 举例来说,我有以下设置: 那么在这种情况下,我将进行哪种映射?对于这个特定示例的答案肯定会受到赞赏,但我也确实希望获得何时使用一对多和多对多以及何时使