从 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 活动记录的主要内容,如果未能解决你的问题,请参考以下文章
如何加快rails3.2中的活动记录?我的活动记录查询时间超过 3 分钟