我需要为我正在处理的项目做一些复杂的子查询。我无法弄清楚如何在普通事件记录中做到这一点。我尝试了几件事,最后选择了使用
的通用 SQL 查询ActiveRecord::Base.connection.exec_query(
"
SELECT gid as id, (dp).path, (dp).geom, ST_AsText((dp).geom), ST_X((dp).geom) as longitude, ST_Y((dp).geom) as latitude
FROM (
SELECT gid, ST_DumpPoints(ST_AsText(ST_Transform(geom, 4326))) as dp
FROM apples
WHERE gid in (#{@object.id})
) AS GEO;
"
)
在这里,我从一个子查询中进行选择,并使用普通的 postgresql 将几何图形转换为点。如果我要在 ActiveRecord 查询中执行此操作,我该怎么做?这种类型的查询在 ActiveRecord 中甚至可能吗?
最佳答案
ActiveRecord 不会为您提供任何花哨的东西。您可以执行简单的操作,但当需要复杂的查询时,您只需像以前一样使用纯 SQL。
可以查看Arel这可能会给你更多的灵 active 。但我认为,最终还是不值得 - 它不会像本地查询那样有效。
用 ORM 做简单的事情。使用纯 SQL 执行复杂的操作。
关于ruby-on-rails - 了解事件记录查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52324769/