2011-06-24 36 views
2

我正在設置一個自定義查詢,該查詢使用一系列OR語句與BETWEEN語句以及最終的GROUP BY ID HAVING COUNT(*)> =#{tolerance} 。更不用說INNER和LEFT加入運營。將Rails自定義SQL查詢映射到ActiveRecord模型

我會假設它不可能使用活動記錄進行設置。所以我使用Model.connection.select_all()命令來激發查詢。這有效,但我怎麼不把所有的行映射到特定的模型?

回答

9

Rails非常強大,特別是如果您使用Rails 3 & ARel。所以我不會感到驚訝,如果你實際上可能用rails寫你的查詢。

但是,總會有時候需要編寫原始SQL。

要做到這一點,而不是Model.connection使用Model.find_by_sql(QUERY_STRING)

這樣的查詢將得到解析自動爲您只要確保你只select "model.*"

+2

這可能是最好的解決方案,走得更遠,如果你正在使用PostgreSQL,你可能想創建一個視圖此查詢:請參閱[KnowSQL演示文稿](http://knowsql.heroku.com/#1)在70和72之間滑動 –

相關問題