【问题标题】:Difference between ActiveRecord::Base.connection and find_by_sqlActiveRecord::Base.connection 和 find_by_sql 之间的区别
【发布时间】:2016-06-28 14:22:10
【问题描述】:

我需要在我的 rails 应用程序上执行一些自定义查询,并且想知道哪种方法更好:

results = ActiveRecord::Base.connection.execute(query)

或者

Model.find_by_sql(query)

一直在阅读文档,但并没有真正了解它们的性能。

【问题讨论】:

    标签: sql ruby-on-rails postgresql activerecord


    【解决方案1】:

    execute 是一种低级方法。它返回数据库驱动程序返回的任何内容,例如Mysql2::Result 的实例。您可以使用它执行任何类型的查询

    find_by_sql 返回一个由相应类的 ActiveRecord 对象组成的数组,由结果构造而成(因此传递不产生合适结果集的查询是没有意义的)。

    中间人是连接上的方法,例如select_allselect_values 等。它们不会创建活动记录对象,但会将原始驱动程序结果转换为数组、哈希、字符串等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2020-05-10
      • 2014-09-20
      相关资源
      最近更新 更多