使用 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() 但您如何处理“来自”? 还是将所有操作作为一条语句执行会更好?
感谢您的帮助。
最佳答案
在您的应用程序中使用 SQL 没有任何问题,只要您可以验证它是否正常工作并且不会让您遭受注入(inject)攻击。由于此语句按原样执行,因此您在这方面没问题。
ActiveRecord::Base.connection
提供了一种执行任意查询并以各种格式检索结果的方法。 select_all
或 select_rows
可能是您要查找的内容。
AREL 查询生成器并不总是像我们希望的那样聪明,所以当有疑问时,请使用最简单的表达形式。在您的情况下,它似乎是那段 SQL。
要使用 AREL 重写它,您必须使用 join
方法将其链接回自身。
关于mysql - 导轨 : ActiveRecord - Custom SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5703760/