ruby-on-rails 我如何创建一个查询连接两个具有相同属性的表?

velaa5lx  于 2023-03-24  发布在  Ruby
关注(0)|答案(1)|浏览(115)

我有两个表,其中一个表有一个外键

type
id, name

以及

section
id, type_id, name, color

现在我需要创建一个查询来获取所有带有@name的部分,如果@name与www.example.com匹配category.name,我需要获取该类型的所有部分
示例:
类型:

id= 1, name: oneType
id= 2, name: twoType
id= 3, name: threeType

截面

id=1, type_id:1, name: section1
id=2, type_id:2, name: section2
id=2, type_id:2, name: section3

现在如果我在寻找“2”,预期的结果必须是这样的:

id=2, type_id:2, name: section2
id=2, type_id:2, name: section3

现在如果我正在寻找'sect',预期的结果必须是这样的:

id=1, type_id:1, name: section1
id=2, type_id:2, name: section2
id=2, type_id:2, name: section3

现在如果我正在寻找'section 2',预期的结果必须是这样的:

id=2, type_id:2, name: section2

这是我的尝试:

Section.joins(:type).where("name = ?", @name).select("id, name")

但我得到这个错误:

TypeError:
       can't quote Array
ie3xauqp

ie3xauqp1#

为了返回所有与查询字符串匹配的Sections(按其名称或其关联Type的名称),可以使用.joins查询来联接SectionType表,然后使用.where子句搜索匹配的记录,如下所示:

Section.joins(:type).where("sections.name LIKE ? OR types.name LIKE ?", "%#{query}%","%#{query}%")

相关问题