在Rails/ActiveRecord中命名SQL查询
将 Rails 与 ActiveRecord(和 PostgreSQL)一起使用时,执行“简单”查询会为它们添加一个名称,例如调用
Article.all
# => Article Load (2.6ms) SELECT "articles".* FROM "articles"
命名查询Article Load。但是,当执行稍微复杂的查询时,不会生成名称,例如
Article.group(:article_group_id).count
# => (1.2ms) SELECT COUNT(*) AS count_all, "articles"."article_group_id" AS articles_article_group_id FROM "articles" GROUP BY "articles"."article_group_id"
如果使用以下execute方法执行自定义查询,我可以添加一个名称:
ActiveRecord::Base.connection.execute("SELECT * FROM articles", "My custom query name")
# => My custom query name (2.5ms) SELECT * FROM articles
但是有没有办法将自定义名称添加到使用 ActiveRecord 方法构建的查询中?
如果您想知道为什么:该名称对于所有类型的监控都很有用,例如在 AppSignal 中查看慢查询时。