ActiveRecord::Base.connection和按\ sql查找\之间的区别

ActiveRecord::Base.connection和按\ sql查找\之间的区别,sql,ruby-on-rails,postgresql,activerecord,Sql,Ruby On Rails,Postgresql,Activerecord,我需要在rails应用程序上执行一些自定义查询,我想知道哪种方法更好: results = ActiveRecord::Base.connection.execute(query) 或 一直在阅读文档,但没有真正了解它们的执行情况。execute是一种低级方法。它返回数据库驱动程序返回的任何内容,例如Mysql2::Result的实例。您可以使用此命令执行任何类型的查询 find_by_sql返回一个由结果构造的相应类的ActiveRecord对象数组(因此传递一个不生成合适结果集的查询是没有

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

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


一直在阅读文档,但没有真正了解它们的执行情况。

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

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


中途之家是连接上的方法,如
select_all
select_value
等。这些方法不创建活动记录对象,但会将原始驱动程序结果转换为数组、哈希、字符串等。

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

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

中途站是连接上的方法,例如
select_all
select_value
等。这些方法不会创建活动记录对象,但会将原始驱动程序结果转换为数组、散列、字符串等

Model.find_by_sql(query)