Rails - Active Record:添加额外的选择列来查找(:全部)

2024-03-18

我想添加新列sum(time_entries.hours)到sql选择 我正在查询这样的条目:

issues = Issue.visible.where(options[:conditions]).all(
    :include => ([:status, :project, :time_entries] + (options[:include] || [])).uniq,
    :conditions => statement,
    :order => order_option,
    :joins => query_joins(order_option.join(',')),
    :limit => options[:limit],
    :offset => options[:offset],
    :group => "#{Issue.table_name}.id"
)

它生成此选择:

SELECT
 "issues"."id"                         AS t0_r0,
 ...
 "time_entries"."hours"                AS t3_r4,
 ...
 "versions"."sharing"                  AS t8_r9
FROM "issues"
 LEFT OUTER JOIN "projects" ON "projects"."id" = "issues"."project_id"
 LEFT OUTER JOIN "issue_statuses" ON "issue_statuses"."id" = "issues"."status_id"
 LEFT OUTER JOIN "time_entries" ON "time_entries"."issue_id" = "issues"."id"
 LEFT OUTER JOIN "users" ON "users"."id" = "issues"."assigned_to_id"
 LEFT OUTER JOIN "trackers" ON "trackers"."id" = "issues"."tracker_id"
 LEFT OUTER JOIN "enumerations"
   ON "enumerations"."id" = "issues"."priority_id" AND "enumerations"."type" IN ('IssuePriority')
 LEFT OUTER JOIN "issue_categories" ON "issue_categories"."id" = "issues"."category_id"
 LEFT OUTER JOIN "versions" ON "versions"."id" = "issues"."fixed_version_id"
WHERE "issues"."id" IN (1) AND (projects.status <> 9 AND projects.id IN (SELECT
                                                                       em.project_id
                                                                     FROM enabled_modules em
                                                                     WHERE em.name =     'issue_tracking')) AND
  ((issues.status_id IN (SELECT
                           id
                         FROM issue_statuses
                         WHERE is_closed = 'f')))
GROUP BY issues.id
ORDER BY issues.id
 DESC

我尝试插入:select=>"*, sum(time_entries.hours)"到哈希参数all方法,但是没有效果。

如何向此选择添加新列? 另外,我需要保留所有当前列,因为它们在过滤器中使用。 有没有办法不用手动指定所有列?

UPDATE:红宝石 1.9.3 轨道 3.2.13


表名看起来像来自Redmine。我最近实际上遇到了类似的问题。我发现所选列源于可见范围。我无法确切地确定为什么,但如果没有它,“选择”选项就会按预期工作。

Using

Issue.select("#{Issue.table_name}.*, sum(#{TimeEntries.table_name}.hours AS total_hours").where("#{your_conditions}").group(:id).all

应该给你你想要的数据。附加列可以作为问题属性直接访问:

Issue.total_hours

Edit:

如果无法同时选择所有问题字段(用于创建完整的问题对象)和总和,则在获取所需问题后需要使用第二条语句。

issues = Issue.visible.where("#{issue_conditions}").all
issue_ids = issues.map(&:id)
# if you do not need the issue objects, use .pluck(:id) instead of .all

spent_hours = TimeEntries.select('issue_id, sum(hours)')
                         .where(:issue_id => issue_ids)
                         .where("#{other_time_conditions}")
                         .group(:issue_id).all

或者,您可以使用 Redmines Issue 类中包含的便利函数。使用它可以让软件为您完成工作:

i = Issue.includes(:time_entries).find(1)
i.total_spent_hours

包含可确保计算不会再次访问数据库,因为所有相关关联都已加载。

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

Rails - Active Record:添加额外的选择列来查找(:全部) 的相关文章

  • 在 Rails 中实现多个字段的自动完成

    我有一个应用程序 它实现了群组功能 每个小组有n名成员 此外 每个组都有一个组特定的个人资料图片 我已经能够实现组功能的自动完成 仅记住组名称 我已经参考了以下教程 http railsforum com viewtopic php id
  • 防止语言环境文件中的 HTML 字符实体被 Rails3 xss 保护破坏

    我们正在构建一个应用程序 这是我们第一个使用 Rails 3 的应用程序 并且我们必须从一开始就构建 I18n 作为完美主义者 我们希望在我们的视图中使用真正的排版 破折号 卷曲引号 省略号等 这意味着在我们的 locales xx yml
  • 使用 SASS 切换用户主题 - Ruby on Rails

    所以我有一个 Rails 管理系统 允许用户选择一个主题 基本上是一组 SASS 颜色变量 它将使用新颜色重新编译 application css scss 当用户从下拉菜单中选择并提交时 更改此设置的最佳方法是什么 我阅读了一些有关缓存和
  • Rails 3 默认作用域、可覆盖的作用域

    我遇到的情况是现有应用程序的行为正在发生变化 这让我非常头疼 我的应用程序有照片 照片有一个状态 batch queue or complete 应用程序中的所有现有照片都是 完整的 99 的情况下 我只需要显示完整的照片 并且在所有现有代
  • 如何在控制器内部使用 auto_link

    在我的控制器中 我需要构建一个 JSON 对象 如何在控制器内使用 auto link 现在它错误 NoMethodError undefined method mail to for
  • 同一模型之间的两个 has_many 链接

    I have users其中有products通过 habtm 链接 该链接正在运行 我想添加一个链接user模型和product模型 以跟踪creator该产品的 当然 谁并不总是拥有该产品 但是当我写在我的user and produc
  • 强参数不起作用

    使用 Ruby 1 9 3 Rails 3 2 13 Strong parameters 0 2 1 我遵循了教程和railscasts中的每一个指示 但我无法让strong parameters工作 这应该是非常简单的事情 但我看不出错误
  • Postgres 使用 Rails Active Record 在 IN 列表中 ORDER BY 值

    我收到按 收入 排序的 UserId 列表 一次大约 1000 个 我在 我的系统数据库 中有用户记录 但 收入 列不存在 我想从 我的系统数据库 中检索用户 按照列表中收到的排序顺序 我尝试使用 Active Record 执行以下操作
  • rvm编译安装ruby 2.5.0出错

    我正在尝试使用 rvm 安装 ruby 2 5 0 但出现错误 我在 Ubuntu 18 16 和现在的 Linux Mint Cinnamon 上尝试过 基本上我在运行安装 ruby 的代码之前所做的是 打开 GPG 密钥https rv
  • 如何以 Rails 方式处理 JavaScript 事件(例如“link_to :remote”)?

    我正在使用 Ruby on Rails 4 我想以 Rails 方式处理 JavaScript 事件 也就是说 例如 假设我有以下内容 link to destroy article path article method gt delet
  • 渲染:带参数的动作

    我有一个有 2 种方法的类 第一个方法由视图使用一些 GET 参数 params page 调用 我想保存这些参数并通过渲染操作将它们发送到我的第二个方法 class exemple def first sql save of params
  • 自动测试无限循环

    我在 Rails 项目中使用自动测试时遇到了一个问题 即当测试失败时 即 我修改了测试文件并且自动测试自动运行测试 自动测试会不断尝试运行测试 当然每次都会失败 因为文件尚未被修改 而不是等到文件再次保存 当咆哮通知打开时 当我试图修复代码
  • Rails 4 i18n,如何转换子域用于区域设置的路由

    我正在使用子域来确定 Rails 4 网站中的区域设置 我完全按照我想要的方式使用区域设置切换器 但现在我需要翻译路线 并且我不确定继续的最佳方法 我看过https github com kwi i18n routing https git
  • ApplicationController 的未定义方法“helper_method”,Rails 5

    我正在尝试使用doorkeeper 将oAuth2 0 集成到我的仅rails api 应用程序中 但我不断收到此错误 ApplicationController 的未定义方法 helper method 但无法找到解决该问题的明确解决方案
  • 如何在 Rails 控制器中调用通道方法?

    我有一个订阅用户的 ActionCable 方法 如果启动新的 convo 我也希望用户订阅新频道 我无法找出在控制器中调用通道方法的正确语法 更新 问题是消息在发送时附加到聊天框 但是当发送第一条消息时 Websocket 连接尚未建立
  • 从 Ruby 中的 DateTime 变量获取时间

    我在 ruby 中工作 我有一个包含数据库中今天的日期时间的对象 我只想要时间截断数据 我怎样才能得到那个 Try 日期时间 strftime http www ruby doc org stdlib 1 9 3 libdoc date r
  • 为什么 mongrel 没有在 Rails 3.2.rc 中启动?

    启动 mongrel 的 GEMFILE gem rails 3 1 0 gem mongrel gt 1 2 0 pre2 启动 WEBrick 的 GEMFILE 不是杂种 gem rails 3 2 0 rc2 gem mongrel
  • Rails 查询返回属于任何城市和不属于任何城市的用户

    I have Many to Many Associations两个表之间 对于前用户和城市 users id name 1 Bob 2 Jon 3 Tom 4 Gary 5 Hary cities id name 1 London 2 N
  • 预期的 ProductField,出现数组问题

    我有一个 Rails 4 应用程序 它有一个如下所示的 params 块 def store params params require store permit name description user id products attr
  • 将 Rails 变量传递给液体可以在控制台中工作,但不在视图中

    我想将哈希传递给渲染方法 当我这样做时 在我的控制台中一切正常 object Object find params id hash object object to liquid template Liquid Template parse

随机推荐

  • 为什么我的 UDP 广播失败?

    我正在尝试发送 UDP 广播 但wireshark 没有报告任何流量 这是执行发送的代码片段 void SendBroadcast String ip 255 255 255 255 int port 30718 String messag
  • 在 shell 脚本中扩展变量

    我有一个需要循环的查询 query select dbserver as server while read dbserver username password dbname type do mysql h dbserver u user
  • 如何使用 VBA 将数据从关闭的工作簿(保持关闭状态)复制到主工作簿中?

    我需要使用 VBA 将数据从关闭的工作簿复制到主工作簿中 而不打开它们 I use Workbooks Open从 4 6 个文件开始 每个需要打开的文件都会大大减慢复制操作的速度 我需要高效的 VBA 代码来复制数据 而无需打开每个文件
  • Azure 存储非经典 (V2) - 如何配置自定义域

    在新的 Azure 门户中 有 2 个存储帐户 非经典帐户和经典帐户 因为我认为经典就是旧版本 所以我选择非经典 问题是 我无法在新门户上配置自定义域 它将我重定向到旧的 azure 门户 manage windowszuare com 问
  • 隐藏包中的模块导入

    我有一个小包 有一些依赖项 例如 pandas 和 gensim 文件结构是这样的 package init py agg clean py In the init py文件 我有import agg clean所以我能够以链式方式访问这些
  • 嵌入式 Python 应用程序中 Py_Finalize 期间发生致命错误

    感谢您的帮助 这个问题的变体已经被问过很多次 但我还没有找到完整的答案 我正在使用 MS MFC 类将嵌入式 Python 3 4 2 添加到用 C 编写的现有模拟器工具中 该应用程序是多线程的 以便用户可以执行Python脚本并与模拟器系
  • 列出 pyspark 中加载的所有其他 jar

    我想查看我的 Spark 上下文正在使用的罐子 我在Scala中找到了代码 spark shell jars master spark datasci 7077 jars opt jars xgboost4j spark 0 7 jar w
  • CFBundleShortVersionString 必须是最多三个非负整数的以句点分隔的列表

    将我的应用程序提交到应用程序商店时 我收到此错误 这是我的 info plist 文件中的相关部分
  • 神经网络需要多少个纪元来学习平方? (包括测试结果)

    好吧 首先我要说的是 我很清楚这取决于很多因素 我正在向有经验的人寻求一些一般准则 我的目标是not制作一个可以为我计算数字平方的神经网络 但我认为这将是一个很好的实验 看看我是否正确实现了反向传播算法 这看起来是个好主意吗 无论如何 我担
  • 多模块 Maven 项目中的 log4j

    如何在多模块 Maven 项目中实现 log4j 我是否将 log4j properties 文件添加到每个子模块的 src main resources 目录中 如果是这样 我是否必须为每个文件附加器指定不同的输出文件 或者有没有一种方法
  • db2 查询时间戳数据类型的奇怪行为

    我想查询 db2 中的时间戳数据类型 我在下面写了查询 Select from sample where LASTMODIFIEDDATE timestamp 2012 04 03 07 59 50 我没有得到上述查询的任何结果 然后我尝试
  • JFreeChart - Java 堆空间问题

    我是第一次使用 JFreeChart 并且使用 TimeSeriesCollection 创建 TimeSeriesChart 我的数据库查询结果集就是全部 大约1000条记录 我在用org jfree date time Minute M
  • 如何为 CMake 构建过程本身添加 add_custom_command() ?

    有什么方法可以执行与 add custom command 等效的操作 当某个文件更改时运行外部脚本 但对于应该在 CMake 脚本执行本身期间运行的内容 即 用于依赖图生成 我们将源代码文件分为多个子库 并且有一些配置文件列出了哪个源文件
  • 如何通过 Plotly 从 Dash 中的回调函数访问 cookie?

    我有一个简单的 Dash 回调函数 如下所示 app callback dash dependencies Output test output children dash dependencies Input test input val
  • WPF MVVM 代码背后的最佳实践

    我是一名使用 MVVM 模式通过 WPF 学习 C 的学生 最近 我一直在研究我的应用程序的艺术 自定义启动屏幕 当我不希望它关闭时 它不应该关闭 我一直在网上搜索一种无需后台代码即可完成此操作的好方法 不幸的是 几天后我仍然没有找到令人满
  • java继承问题-必须在父类中创建空构造函数

    我在 netbeans ubuntu java 标准项目上编程 测试准备 当我创建 AccountStudent java 时出现错误 账户 java public abstract class Account protected doub
  • 使用 JNA 访问包含多个类的 DLL 方法

    我是使用 JNA 从 Java 访问 DLL 的新手 所以如果这对每个人来说都是显而易见的 请原谅我 我需要从 DLL 用 VB 编写 中的类访问方法 并且不能通过仅加载库来完成此操作 因为我看到如何访问其中的类 即该 DLL 名为 CDr
  • Jetpack Compose 不采用 colorScheme

    我有一个用 Jetpack Compose 编写的 Android 应用程序 我正在尝试使用应用程序中定义的 colorScheme 设置图标颜色 但它不起作用 下面是我的代码 Color kt import androidx compos
  • 如何从 Firebase getDocument 函数 (Swift) 中写入变量

    我想读取一个文档 从该文档中获取一个字段 并将一个变量设置为该字段的值 我希望写入在 Firebase getDocument 函数外部声明的变量 实际结果是该变量正在 Firebase getDocument 函数内写入 但在函数外部它为
  • Rails - Active Record:添加额外的选择列来查找(:全部)

    我想添加新列sum time entries hours 到sql选择 我正在查询这样的条目 issues Issue visible where options conditions all include gt status proje