如何在 Rails 内的 AREL 子查询上进行连接

2024-03-26

我有一个简单的模型

class User
    has_many :logs


class Logs

通过外键logs.user_id以通常的方式关联。我正在尝试使用 Arel 执行以下操作,根据 Arel 文档,它应该可以工作。

u_t = Arel::Table::new :users
l_t = Arel::Table::new :logs

counts = l_t.
    group(l_t[:user_id]).
    project(
        l_t[:user_id].as("user_id"),
        l_t[:user_id].count.as("count_all")
    )

l_t.joins(counts).on(l_t[:id].eq(counts[:user_id]))

当我这样做时,我收到错误

TypeError: Cannot visit Arel::SelectManager

然而《阿雷尔》的作者明确建议 http://web.archive.org/web/20100131013905/http://magicscalingsprinkles.wordpress.com/2010/01/28/why-i-wrote-arel/阿雷尔竟然能做出这种事。

请不要写关于如何使用原始 sql、另一种类型的 Arel 查询等实现相同查询的回复。这是我感兴趣的模式,而不是该查询的具体结果。


您可以使用 join_sources 从 Arel::SelectManager 实例检索 Arel::Nodes::Join,并将其传递给 joins

使用你的例子:

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

如何在 Rails 内的 AREL 子查询上进行连接 的相关文章

  • 执行捆绑安装时出现 MySql 错误

    当我进行捆绑安装时 出现以下错误 Installing mysql2 0 3 10 with native extensions Gem Installer ExtensionBuildError ERROR Failed to build
  • 条件内连接

    我希望能够根据表达式的结果内连接两个表 到目前为止我一直在尝试的 INNER JOIN CASE WHEN RegT Type 1 THEN TimeRegistration ELSE DrivingRegistration AS RReg
  • 为什么即使 use_transactional_fixtures = false after_commit 也没有运行

    rspec 中的事务装置会阻止调用 after commit 但即使我使用以下命令禁用它们 RSpec configure do config config use transactional fixtures false end The
  • Rails 3.1.4 - 渲染:文本

    我正在将 Rails 2 应用程序更新到 Rails 3 发现使用 render text 的行为不再相同 results 是一个数组 在我的控制器中 render text gt ul results ul 它将整个数组作为字符串返回 而
  • 如何通过 link_to helper 从 Rails 视图中将参数传递给控制器​​操作

    这是我的link to视野中的帮手 我想在其中附加一个参数link to标记以便我可以在操作中获取它connectTo 我无法找到正确的语法或方法 也无法理解我在 stackoverflow 上找到的一些答案 我怎样才能实现这个目标 def
  • mysql从具有不同键的同一列进行多个连接

    我需要一些帮助来与下表进行第二次连接 我之前从这里得到了一些帮助 建议我需要添加第二个 JOIN 但是 这就是我陷入困境并需要一些帮助的地方 wp posts id Post Title 01 Event 1 02 Event 2 wp 后
  • 如何对一组和进行求和? SQL Server 2008

    我有一个查询sum像这样 SELECT Table1 ID SUM Table2 Number1 Table2 Number2 AS SumColumn FROM Table1 INNER JOIN Table3 ON Table1 ID
  • 如何在 JavaScript 中对两个对象数组执行内连接?

    我有两个对象数组 var a id 4 name Greg id 1 name David id 2 name John id 3 name Matt var b id 5 name Mathew position 1 id 6 name
  • ruby on Rails 3.1 将 .swf 移动到资产管道?

    是否可以将 SWF 文件移动到资源管道中 如果可以 如何做到这一点 我建议将它们放在一个名为的文件夹中app assets flash 将此文件夹添加到您的资源路径中 config assets paths lt lt Rails root
  • simple_forms 自定义数据属性

    我想在 simple form 生成的输入标签上有一个附加的数据属性 以下不起作用 这怎么可能做到呢 有可能吗 正如您可能已经猜到的 我正在尝试将 bootstrap datepicker 添加到我的网站 而不使用显式 js 来初始化日期选
  • 连接2个表区分大小写

    我有 2 个表 需要获取品牌代码的结果 例如 在数据库中 我有两个不同的品牌 但它们的代码是相同的 只有小写和大写不同 例如 代码名称 关于耐克 和阿迪达斯 如何在代码上内连接 2 个表以分别获取这 2 个表 现在 在内连接之后我得到了这
  • 通过 has_many 进行多个数据库连接

    如何通过使用多个数据库连接来创建 has many 我有一个名为 master 的数据库 其中保存位置信息 这是从单独的应用程序更新的 用户可以访问许多位置 但所有其他模型都位于另一个名为 budget 的数据库中 以下是模型的设置方式 p
  • 新手:我的例子中的文本替换

    In my 红宝石 on Rails应用程序中 我的助手中有一个方法 它通过以下方式打开文件 content File open myfile txt The 文件内容就好像 my car my seat my age my son my
  • 3 个表的 SQL 查询(或联接)

    第一次在 Stack Overflow 上问问题 很棒的资源 但是只有一件事真正让我作为 SQL 新手感到困惑 我有三个表 我想获取与鲍勃的学生相关的所有导师的姓名 表 1 教师 ID Name 1 Bob 表 2 学生 STUDENT I
  • 如何停止 Heroku 服务器?

    我有一个托管在 heroku 上的临时服务器 我只想将其关闭 但不想破坏该应用程序 我该怎么做 我是否有类似 heroku stop 之类的命令 例如 heroku restart 来重新启动 OR 有没有办法让服务器在超过 750 小时免
  • javascript - Twitter bootstrap jquery 插件未编译用于生产

    我正在使用 Twitter Bootstrap 开发 3 1 Rails 应用程序塞胡纳克的宝石 https github com seyhunak twitter bootstrap rails 在生产模式下 我可以通过管道预编译使用基本
  • Rails 3.1 中的嵌套表单

    我在嵌套表单方面遇到问题 rails 3 1 在应该渲染 fields for 块时不渲染 fields for 块 例如 在编辑现有记录时 由于我对自己的英语不够自信 我制作了一个小示例应用程序 新行动 def new manga Man
  • Rails 4 - 如何在活动记录查询中为includes()和joins()指定别名

    我如何给出别名 例如includes 给出如下 用户 活动记录模型 Student 活动记录模型 继承自User STI Teacher 活动记录模型 继承自User STI 项目 活动记录模型 这里有一些例子 第一个案例 更多性传播感染协
  • Knex 中的表的别名

    我有一个 SQL 查询两次引用同一个表 并且我需要将该表别名为两个单独的别名 我不太清楚如何用 Knex 来编写它 有一个 单词 表和一个 用户 表 Words 表有两个外键 author id 和 winner id 引用 Users 表
  • 在代码中的其他地方设计渲染符号=>向上/形式部分

    我刚刚开始使用 Devise 和 Rails3 我已经完成了身份验证并正在工作并了解基础知识 截至目前 在代表我的主页 首页的主控制器中 我有两个链接 一个链接到 注册 gt sign up 另一个链接根据登录 注销 gt sign in

随机推荐

  • 如何在 WPF 中对 DataGrid 列标题进行分组

    是否可以在 WPF 数据网格中执行此操作 A header B Header A1Header A2Header B1Header B2Header A1Data A2 Data B1 Data B2 Data A1Data A2 Data
  • 如何在 Eclipse 中使用 Antlr4 Ide 查看实时解析树?

    我是 Antlr4 的新手 但我知道 Eclipse 存在一个插件 我有一个简单的问题 创建 g4 文件后 如何可视化实时解析树以便查看输入表达式的树 谢谢 在 Eclipse 中安装 Antlr4Ide 插件后 窗口 gt 显示视图 gt
  • 从 Fiori 列表报告导航到标准应用程序(例如热点)?

    我已经根据之前创建的 CDS 视图创建了列表报告 Fiori 应用程序 是否有可能在现有和 或附加 CDS 视图中使用一些注释来创建供应商编号上的热点智能字段 IE 当我点击它时 它会将我导航到该供应商的标准 业务合作伙伴 应用程序 如果这
  • 代码优先迁移过程:我缺少哪一部分?

    我的步骤 1 使用查询在 SSMS 中创建我的数据库 Execute in SQL Server Management Studio prior to building data model s CREATE DATABASE snaked
  • Accumulo、zookeeper hadoop CENTOS 6 的安装说明、下载和版本

    我希望获得有关 Accumulo zookeeper hadoop 安装说明 下载和 CENTOS 6 版本的指导 Thanks Chris 您可以通过cloudera manager版本5进行安装 我最近使用相同的方式安装了accumul
  • GDB - 如何打破“有些东西被写入cout”?

    我想设置一个断点 每次写入内容时都会触发stdout通过cout流 但我无法找到该断点的可能位置 我怎样才能在 gdb 中做到这一点 这是一种依赖于平台的方式 如果您在 x86 64 上并使用 gcc 进行构建 则写入 std cout 会
  • 多个已排序数组的交集

    From this https stackoverflow com questions 2400157 the intersection of two sorted arrays 我们知道解决两个排序数组的交集的方法 那么如何获取多个已排序
  • Razor 中枚举下拉列表的显示名称

    如何在 Razor 的下拉列表中显示枚举的自定义名称 我当前的代码是 Html DropDownListFor model gt model ExpiryStage new SelectList Enum GetValues typeof
  • 制作 CSS 精灵的工具? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在android项目中添加“jfeinstein10 / SlidingMenu”的确切过程

    我对android完全陌生 我正在尝试实现Sliding Menu having ListView with Swipe Gesture 通过一些搜索我发现https github com jfeinstein10 SlidingMenu
  • 图像增强使性能变得更差[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在研究一个图像分割项目 并一直在尝试采用图像增强技术来增加训练集的大小 起初 我只是尝试使用水平翻转将图像尺寸放大一倍 但我发现性
  • 在php中的共享主机上创建并导入mysql数据库

    我正在尝试编写 php 脚本 连接到 mysql 创建数据库 创建用户和密码 将用户添加到数据库 将准备好的sql文件导入数据库 问题是它将位于共享主机上 我正在努力使其通用并与不同的主机一起使用 我猜数据库和 db 用户将在共享主机上以我
  • Apache 2.4 需要 ip 不起作用

    尝试从旧的允许 拒绝 顺序语法转换为新语法以保护 WordPress 管理部分 但我无法让它识别我的 IP 这就是我的 htaccess文件包含在 wp admin folder ErrorDocument 401 default Erro
  • Java变量声明在性能方面的差异[重复]

    这个问题在这里已经有答案了 这两种声明的区别在哪里String s 1 public static void main String args String s for int i 0 i lt 1000000 i s String i S
  • 请批评我的 PHP 身份验证工作

    发帖后this https stackoverflow com questions 443988 simple authorisation login capability in php不久前 我决定用 PHP 创建自己的注册 身份验证功能
  • 使用 Ubuntu,如何从 CPAN 安装 DBD::Sybase?

    每当我尝试构建DBD Sybase连接到 MSSQL 时出现错误 sudo cpanp install DBD Sybase Installing DBD Sybase 1 15 Running usr bin perl usr bin c
  • 在 Go 中将事物通道作为接口通道传递

    我的程序有一个管道结构 我刚刚实现了一个缓存过滤器 如果已处理的数据版本在缓存中 则该过滤器将直接将内容发送到输出 func Run in chan downloader ReadyDownload chan CCFile out make
  • 绘制曲线连接网页上的元素

    I have been tasked with turning this rough idea into a live page 虽然我已经建立了基本结构 但我想知道创建连接月份的曲线的最佳方法 我应该只创建图像并覆盖它们吗 有没有办法用某
  • PHP gnupg'导入失败'

    我一直在尝试在 PHP 中使用 gnupg 来加密将上传到 ftp 文件夹的文件 我目前正在使用 MAMP 在 mac 上运行 并且我相信 gnupg 已正确安装 我有来自文件接收者的公钥 当我尝试导入该密钥 无论是作为字符串文字还是从文本
  • 如何在 Rails 内的 AREL 子查询上进行连接

    我有一个简单的模型 class User has many logs class Logs 通过外键logs user id以通常的方式关联 我正在尝试使用 Arel 执行以下操作 根据 Arel 文档 它应该可以工作 u t Arel T