从 SQL 到 Rails 活动记录

Posted

技术标签:

【中文标题】从 SQL 到 Rails 活动记录【英文标题】:From SQL to Rails Active Record 【发布时间】:2021-11-09 04:04:59 【问题描述】:

如何将这个 SQL 查询放入 Rails ActiveRecord?

选择对象.*, (objects.value)->>0 FROM "users", jsonb_each(hit->'opportunity') objects WHERE objects.key::text ~ '^[0-9]0,4_pct$' and ((objects.value)->>0) ::数字 >= 0.5

【问题讨论】:

这看起来只是查询的一半,我们缺少任何尝试自己实际解决问题的尝试,以及有关架构、模型和实际预期结果的任何信息成为。 idownvotedbecau.se/noattempt 对不起,这不是查询的一半。这是我使用的功能查询。我只是不知道如何将它放入 ActiveRecord 查询中。 是的,但是您尝试过什么以及您真正想要对结果做什么?无论结果如何映射到您的模型,您都非常不清楚。由于您使用的是一系列 Postgres 特定功能,因此您很可能必须在大部分查询中使用字符串。 【参考方案1】:

你可以这样做:

User.select("REPLACE(objects.key, '_pct', '' )::int AS key")
    .joins("inner join jsonb_each(users.hit->'opportunity') AS objects ON true")
    .where("objects.key::text ~ '^[0-9]0,4_pct$' AND ((objects.value)->>0)::numeric >= 0.5")

【讨论】:

像魅力一样工作! o/

以上是关于从 SQL 到 Rails 活动记录的主要内容,如果未能解决你的问题,请参考以下文章

Rails 记录 VIP 用户活动

如何加快rails3.2中的活动记录?我的活动记录查询时间超过 3 分钟

Rails 4 - 如何在活动记录查询中为包含()和连接()提供别名

可以在控制器操作中使用活动记录查询吗?

如何要求在 Rails 之外工作的活动记录

Rails 低级缓存不适用于活动记录