【发布时间】:2016-06-28 14:22:10
【问题描述】:
我需要在我的 rails 应用程序上执行一些自定义查询,并且想知道哪种方法更好:
results = ActiveRecord::Base.connection.execute(query)
或者
Model.find_by_sql(query)
一直在阅读文档,但并没有真正了解它们的性能。
【问题讨论】:
标签: sql ruby-on-rails postgresql activerecord
我需要在我的 rails 应用程序上执行一些自定义查询,并且想知道哪种方法更好:
results = ActiveRecord::Base.connection.execute(query)
或者
Model.find_by_sql(query)
一直在阅读文档,但并没有真正了解它们的性能。
【问题讨论】:
标签: sql ruby-on-rails postgresql activerecord
execute 是一种低级方法。它返回数据库驱动程序返回的任何内容,例如Mysql2::Result 的实例。您可以使用它执行任何类型的查询
find_by_sql 返回一个由相应类的 ActiveRecord 对象组成的数组,由结果构造而成(因此传递不产生合适结果集的查询是没有意义的)。
中间人是连接上的方法,例如select_all、select_values 等。它们不会创建活动记录对象,但会将原始驱动程序结果转换为数组、哈希、字符串等。
【讨论】: