【问题标题】:Understanding Active record Queries了解活动记录查询
【发布时间】:2019-02-18 20:12:10
【问题描述】:

我需要为我正在处理的项目做一些复杂的子查询。我无法弄清楚如何在普通的活动记录中做到这一点。我尝试了几件事,最终选择使用通用 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 中甚至可以进行这种类型的查询吗?

【问题讨论】:

    标签: ruby-on-rails ruby postgresql ruby-on-rails-5 rails-activerecord


    【解决方案1】:

    ActiveRecord 不会为您提供任何花哨的东西。您可以执行简单的操作,但是当需要进行复杂查询时,您只需像以前一样使用纯 SQL。

    您可以查看Arel,这可能会给您更多的灵活性。但最终,我认为这并不值得——它不会像原生查询那样有效。

    用 ORM 做简单的事情。用简单的 SQL 做复杂的事情。

    【讨论】:

      猜你喜欢
      • 2012-08-01
      • 1970-01-01
      • 2016-03-10
      • 2013-02-01
      • 2013-04-23
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多