簡體   English   中英

Rails:ActiveRecord - 自定義SQL

[英]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_allselect_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM