gpt4 book ai didi

ruby-on-rails - 以正确的方式从 ruby​​ on rails 执行查询

转载 作者:数据小太阳 更新时间:2023-10-29 08:00:40 25 4
gpt4 key购买 nike

我刚开始使用 ruby​​ on rails,我有一个关于更复杂查询的问题。到目前为止,我在查看 Rails 指南时已经完成了简单的查询,并且效果非常好。

现在我正在尝试从数据库中获取一些 ID,我会使用这些 ID 来获取真实的对象并对它们进行处理。获取这些比简单的 Object.find 方法要复杂一些。

这是我的查询的样子:

select * from quotas q, requests r
where q.id=r.quota_id
and q.status=3
and r.text is not null
and q.id in
(
select A.id from (
select max(id) as id, name
from quotas
group by name) A
)
order by q.created_at desc
limit 1000;

从 sql 管理器执行此查询时,这会给我 1000 个 ID。我想先获取id列表,然后通过id查找对象。

有没有办法通过使用此查询直接获取这些对象?避免 ID 查找?我用谷歌搜索你可以像这样执行查询:

ActiveRecord::Base.connection.execute(query);

最佳答案

假设 Quota has_many :requests,

Quota.includes(:requests).
where(status:3).
where('requests.text is not null').
where("quotas.id in (#{subquery_string_here})").
order('quotas.created_at desc').limit(1000)

我绝不是专家,但大多数基本的 SQL 功能都包含在 ActiveRecord 中。您可能还想查看 #group#pluck 方法来消除丑陋的字符串子查询。

在关系对象上调用 #to_sql 将向您显示它等效的 SQL 命令,并可能有助于您的调试。

关于ruby-on-rails - 以正确的方式从 ruby​​ on rails 执行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15019760/

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