2016-06-28 30 views
0

我需要在我的Rails应用程序执行一些自定义查询,并想知道至极的做法是更好:差异的find_by_sql

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

或者

Model.find_by_sql(query) 

去过阅读文件,但没有真正得到它们的表现。

回答

2

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

find_by_sql返回适当类的ActiveRecord对象数组,从结果中构造出来(所以传递不产生合适结果集的查询是没有意义的)。

中途之家是在连接如select_allselect_values等。这些不创建活动记录对象的方法,但做原始驾驶员结果转换成数组,哈希,字符串等

+0

相当清楚,感谢的人 – ntonnelier