[英]Rails: ActiveRecord - Custom SQL
使用ActiveRecord執行以下SQL的最佳方法是什么:
SELECT parent.*
FROM sections AS node, sections AS parent
WHERE node.left BETWEEN parent.left AND parent.right
ORDER BY parent.left DESC
LIMIT 1
我知道可以使用.limit(),. where()和.order(),但是你如何處理'from'? 或者將整個批次作為單個語句執行是否更好?
謝謝你的幫助。
在您的應用程序中使用SQL沒有任何問題,只要您可以驗證它是否正常工作並且不會讓您暴露於注入攻擊。 由於此聲明按原樣執行,因此您在這方面沒問題。
ActiveRecord::Base.connection
提供了一種執行任意查詢並以各種格式檢索結果的方法。 select_all
或select_rows
可能是你在找什么。
AREL查詢生成器並不總是像我們想的那樣聰明,所以如果有疑問,請使用最簡單的表達形式。 在你的情況下,它似乎是SQL的一大塊。
要使用AREL重新編寫它,您必須使用join
方法將其鏈接回自身。
Parent.from('sections AS node, sections AS parent')
.where('node.left BETWEEN parent.left AND parent.right')
.order('parent.left DESC')
.limit(1)
你得到了鏈接的好處。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.