高效的ActiveRecord has_and_belongs_to_many查询

2024-04-23

我有具有 has_and_belongs_to_many 关系的页面和段落模型。给定paragraph_id,我想获取所有匹配的页面。例如。:

pages = Paragraph.find(paragraph_id).pages.all

但是,这需要两次查询。它可以在一个查询中完成:

SELECT "pages".* FROM "pages" 
INNER JOIN "pages_paragraphs" ON "pages_paragraphs"."page_id" = "pages"."id" 
WHERE "pages_paragraphs"."paragraph_id" = 123

但这可以在没有

  • 使用 find_by_sql
  • 无需修改 page_paragraphs 表(例如添加 id)。

Update:

我的页面模型如下所示:

class Page < ActiveRecord::Base
  has_and_belongs_to_many :paragraphs, uniq: true
end

对于 has_many :through 关系,您可以使用:

pages = Page.joins(:pages_paragraphs).where(:pages_paragraphs => {:paragraph_id => 1})

看一眼指定连接表的条件 here: http://guides.rubyonrails.org/active_record_querying.html http://guides.rubyonrails.org/active_record_querying.html

如果您想要将页面和段落放在一起:

pages = Page.joins(:pages_paragraphs => :paragraph).includes(:pages_paragraphs => :paragraph).where(:pages_paragraphs => {:paragraph_id => 1})

使用 has_and_belongs_to_many:

pages = Page.joins("join pages_paragraphs on pages.id = pages_paragraphs.page_id").where(["pages_paragraphs.paragraph_id = ?", paragraph_id])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高效的ActiveRecord has_and_belongs_to_many查询 的相关文章

  • 如何让 Sublime Text 2 与 Ruby on Rails 配合使用?

    我是 Ruby on Rails 的新手 这是我到目前为止所做的 我已经安装了 XCode Homebrew RVM Ruby 和 Rails 现在如何让 Sublime Text 2 与 Ruby on Rails 一起使用 你应该做的第
  • Capistrano 部署擦除数据库?

    我已成功使用 Capistrano 将我的应用程序部署到生产环境 但我不明白如何处理我的数据库 我正在使用颠覆和乘客 当我运行 cap 部署时 新部署会重新启动一切 它会清除添加到数据库中的数据 显然 必须有一个解决方案 但我很惊讶没有在网
  • Rails 5 - Google 地图 - Javascript 错误 - initMap 不是函数 - 修复一个 js 问题会产生另一个问题

    多年来我一直在尝试弄清楚如何在我的 Rails 应用程序中使用谷歌地图 我目前正在尝试使用 Rails 5 我也一直在试图弄清楚如何让我的 javascript 在生产环境中工作 我最近对这些挑战的尝试概述于生产问题帖子 https sta
  • 更快地将数据库从一个heroku应用程序传输到另一个应用程序

    有没有更快的方法将我的生产数据库传输到测试应用程序 目前我正在做一个heroku db pull然后到我的本地机器heroku db push app testapp但这变得越来越耗时 我有一些种子数据 但它并不像简单地使用我的真实数据进行
  • 多步ActiveRecord的模型验证

    考虑具有以下字段的用户模型 名字 必填 姓氏 必填 电子邮件 必填 要求输入密码 电话 必填 大小 10 位数字 地址 必填 以及包含以下步骤的多步骤注册表单 第一步 包含 名字 姓氏 和 电子邮件 字段 第二步输入密码 电话和地址 您将如
  • 载波无法删除图像

    我现在使用 Carrierwave 上传图像 一切都很好 除了一个 当我添加用于删除上传图像的复选框时 我收到错误 无法批量分配受保护的属性 remove image Form Model class Manufacturer lt Act
  • Rails/heroku 从 gem 迁移到 toolbelt

    我曾经在一个项目中使用过 heroku gem 既然工具带已经出来了 我想换一个 我从 Gemfile 中删除了 gem 并通过 gem uninstall heroku 卸载了它 我使用heroku网站上的pkg安装了heroku工具带
  • Rails ActiveRecord:是否可以组合 :include 和 :conditions 查询?

    想象一下我有 wiki 文章 有很多修订 我想通过数据库使用 ActiveRecord 进行查询 该查询仅返回那些在过去 24 小时内更新过修订的文章 这样的事可能吗 我想它会是这样的 Articles find all include g
  • 动态分配背景图片scss/sass

    我想要做的是有一个表单 您可以在其中上传图片 然后当您查看该对象时 图片会在特定 div 中居中 垂直和水平向上倾斜 其大小未知等 除非有办法使用 image tag 帮助器将其垂直居中 否则我希望能够使用该图像作为背景图像 在我的 css
  • 默认更新嵌套属性

    我尝试更新 iProduction 这是生产中的嵌套表单 但此行出现参数错误 参数数量错误 0 代表 1 生产 update iproducts attributes cow id cow 我的创作动作制作 def create produ
  • 当父对象更新时,活动记录 update_attribute 对对象(父对象)的关联对象(子对象)执行 DELETE 查询

    轨道 3 0 11 红宝石 1 9 3 当我更新父对象时 为什么活动记录 update attribute 对对象 父对象 的关联对象 子对象 执行 DELETE 查询 以下是我的课程 class User lt ActiveRecord
  • Rails 4 - 带有 dependent-fields-rails 的条件 JS

    我正在尝试弄清楚如何在我的 Rails 4 应用程序中使用 dependent fields rails gem 我迷路了 我已将 underscore js 包含在我的供应商 javascripts 文件夹中 并更新了我的 applica
  • 在 Rails 中强制内联渲染 PDF 文档

    我正在编写一个从一组 XML 文件生成 PDF 文件的服务 正在正确生成 PDF 但是 每次我单击 查看 PDF 链接时 浏览器都会要求用户下载 PDF 文件 我需要 PDF 内联显示 就像任何常规 HTML 页面一样 我虽然我写的代码是正
  • 对 Rails 3.1 中的特定路由强制使用 SSL

    我需要强制启用 SSL所有路线在我的申请中除了landing index In config application rb 我有 config force ssl true Then in landing controller rb 我有
  • Rspec 控制器测试,传递 JSON 参数

    我试图实现以下目标 在 RSpec 控制器测试中创建 POST json 请求 并向其传递参数 这是我的代码 it returns access token do post login email bla password bla1 for
  • Rails - 使用 %W

    我有以下效果很好的 def steps w hello billing confirmation end steps first 但我想这样做 def step title w Upload a photo Billing Info Con
  • Flash观看后不清晰

    这是我的创建动作 它创建一个新的 Message 实例 并通过模型验证进行检查 然后有一个简单的 if else 循环 如果模型验证已完成 则发送消息 如果要发送另一个视图 则渲染 新 视图 如果模型验证未得到满足 它只会再次呈现 新 视图
  • Heroku 上的 Google Vision API 身份验证

    在 Heroku 上验证 Vision API 的最佳 简单方法是什么 在开发中我只使用 vision Google Cloud Vision new project instacult keyfile path to keyfile js
  • Ruby on Rails 从视图路由到控制器中的自定义方法

    我有一个控制器名称帖子 在我的 config routes rb 我用过这个 resources posts app controllers posts controller rb class PostsController lt Appl
  • 如何生成devise gem的注册控制器

    我已经设置了 Devise 我已经在 user rb 文件中设置了以下代码 def self create auto password generated password Devise friendly token first 8 sel

随机推荐

  • Laravel 5.1 失败的排队作业在 failed() 方法上失败,阻止调用队列失败事件处理程序

    我正在测试 Laravel 5 1 中的队列功能 我可以让作业在我的数据库表中排队 称为作业 并且可以让它们成功运行 我还创建了一个名为 failed jobs 的队列失败表 为了测试它 在作业表中 我操作有效负载数据以使其失败 然后像这样
  • Swift:递归值类型

    我有一个结构 我想在其中有一个 Struct 类型的全局变量 这个例子本质上是我实际创建的结构的简短版本 struct SplitString splits a string into parts before and after the
  • 正则表达式中的顺序不重要吗?

    我正在查看此 stackoverflow 链接中提出的问题 奇数个 a 的正则表达式 https stackoverflow com questions 28902496 regular expression for odd number
  • ZMQ 模式经销商/路由器心跳

    我在客户端有一个经销商套接字 它连接到服务器端的路由器套接字 我经常看到心跳机制 服务器定期向客户端发送消息 以便客户端知道自己是否正确连接到服务器 以便客户端在一段时间内没有收到消息时可以重新连接 例如这里的偏执海盗模式 http zgu
  • 在 Aurelia 中,我可以绑定包含视图模型中的函数以供自定义元素调用吗?

    我有一个自定义元素 它将接受用户输入 并且在单击 保存 按钮时 我想将信息传递给父视图模型 以便我可以将其发送到服务器并移至下一部分 例如 我将简化这一点 my element js import customElement bindabl
  • 如何从另一个块访问块状态中的数据

    我正在使用 Bloc 模式开发 Flutter 应用程序 认证成功后 UserSate就有了User对象 在所有其他 Bloc 中 我需要访问 UserState 中的 User 对象 我尝试在其他 Bloc 的构造函数参数上获取 User
  • React-testing-library - 屏幕与渲染查询

    有两种使用查询的方法react testing library https testing library com docs react testing library intro 您可以使用返回的查询render https testin
  • 有人有关于 C 语言设计和错误跟踪/控制系统的好指南吗?

    我是 C 开发的软件工程方面的新手 有没有人有关于如何为 C 项目 尤其是嵌入式 设计错误跟踪或错误控制系统的良好指南 谈论 C 库的错误跟踪也会有帮助 根据我的经验 这里的策略分为几个阵营 全局变量ala的使用errno http www
  • 在 pandas 系列上成对应用函数

    我有一个 pandas 系列 其元素构成 freezesets data 0 frozenset apple banana 1 frozenset apple orange 2 frozenset banana 3 frozenset ku
  • 无法通过 Graph API 获取我所属的 Office 365 组

    尝试获取用户所属的所有 Office 365 组 我已在 Azure 上注册了一个 本机客户端应用程序 并仅选择了一项权限 Microsoft Graph 范围下的 读取所有组 问题 其他租户的用户收到 由于缺乏权限 呼叫主体无法同意 错误
  • 根据 .txt 文件中存储的列表复制文件

    我有一个源文件夹 目标文件夹 我想要从源文件夹复制到目标文件夹的文件列表 该文件夹已保存到 txt 文件 listtocopy txt 如下 不确定它是否重要 但它们是 Anabat ZC 文件 S5281925 35 S5282317 2
  • 使用 Python 的 Windows 桌面 GUI 自动化 - 睡眠与紧密循环

    我正在使用 Python 的 PyAutoGUI 库来自动化 GUI 在当前窗口上完成数据输入后 我正在自动化的应用程序会打开一个新窗口 一切都由 python 自动化处理 当前窗口中的数据输入以及打开窗口所需的单击 在当前窗口中执行单击时
  • 如何使用模板模板参数为没有该方法所需的公共接口的 STL 容器实现通用方法

    问题陈述 为教育性的目的 实现适用于STL容器的方法printContainervector stack queue and deque 我提出了一个解决方案 但由于代码量过多 我不喜欢它 我为解决问题所做的事情 1 设计通用函数 期望容器
  • ReadFile() 可能有超时吗?

    while GetExitCodeProcess processInfo hProcess exitCode exitCode STILL ACTIVE ReadFile defaultSTDIN chBuf 1 dwRead 0 Writ
  • 你能让贴纸应用程序有声音吗?

    当你制作一个 iMessage 贴纸应用程序时 是否可以让它在点击时发出声音 示例 您向某人发送了一张贴纸 他们点击它并发出声音 谢谢 是的 您可以使用 iMessage 根据苹果文档here https developer apple c
  • Firebase 与 Swift

    我试图移植firechat ios项目转移到 Swift 并遇到了一些问题 我想这可能只是要求 firebase 人员对其 SDK 进行一些更新 但我想我还是会问 添加 Firebase 及其依赖项后 我无法成功构建我的项目 我收到警告 i
  • C 没那么难: void ( *( *f[] ) () ) ()

    我今天刚看到一张照片 希望得到解释 所以这是图片 抄写 C 并不那么难 void f 定义f作为未指定大小的数组 包含指向函数的指针 该函数返回指向返回的函数的指针void 我发现这令人困惑 并想知道这样的代码是否实用 我用谷歌搜索了这张照
  • 如何按字符串的某些部分排序?

    假设我有列 如何按字符串的某些部分排序codes它具有以下格式的值 LLL NNN 例如 dGd 542 我如何按数字字符串的第二部分进行排序 你应该能够提取子串 http dev mysql com doc refman 5 0 en s
  • Excel VBA:我可以使用公式命名范围吗?

    我的目标是将我刚刚粘贴的范围命名为一个独特的名称 以便我将来可以找到它 复制和粘贴的范围来自下拉菜单 因此必须修改 Selection Name Formula AddSection SUBSTITUTE Add Section D3 如果
  • 高效的ActiveRecord has_and_belongs_to_many查询

    我有具有 has and belongs to many 关系的页面和段落模型 给定paragraph id 我想获取所有匹配的页面 例如 pages Paragraph find paragraph id pages all 但是 这需要