2016-06-28 55 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