gpt4 book ai didi

mysql - Rails 多级关联链中不同模型的查询

转载 作者:行者123 更新时间:2023-11-29 11:56:00 25 4
gpt4 key购买 nike

我有一个多级模型结构,我正在尝试创建一个查询,可以在其中搜索主父模型上的属性或关联更改中的最后一个模型。我的结构如下所示:

class Parent
attr_accessible :pname
has_one :child
end

class Child
has_many :infos
end

class Info
has_one :setting
end

class Setting
has_many :subsettings
end

class Subsetting
attr_accessible :sname
end

我想做的是创建一个where查询,我可以在其中提取“pname = X”或“sname = X”的所有父级。但是,我不确定如何创建那么深的关联:有没有一种方法可以使用事件记录干净地完成它,或者直接创建 mysql 查询更好?

最佳答案

我是徒手输入的,因此可能不是 100%,但您应该能够执行以下操作...

class Parent
has_one :child
has_many :infos, through: :child
has_many :settings, through: infos
has_many :subsettings, through: :settings
...
end

那么您应该可以调用...

Parent.joins(:subsettings).where("parent.pname = ? OR subsetting.sname =?", x)

关于 .where() 调用需要注意的两件事:

  1. 由于您要查询多个联接表,因此需要在列前面加上表名称。

  2. 表名是单数,而不是复数。这就是为什么要子集而不是子集

关于mysql - Rails 多级关联链中不同模型的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33189807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com