mysql - 导轨 : ActiveRecord - Custom SQL

标签 mysql ruby-on-rails-3 activerecord

使用 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_allselect_rows 可能是您要查找的内容。

AREL 查询生成器并不总是像我们希望的那样聪明,所以当有疑问时,请使用最简单的表达形式。在您的情况下,它似乎是那段 SQL。

要使用 AREL 重写它,您必须使用 join 方法将其链接回自身。

关于mysql - 导轨 : ActiveRecord - Custom SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5703760/

相关文章:

php - Codeigniter 使用数组进行事件记录查询

sql - 仅当一个字段匹配多个值时才匹配(错误?)

mysql - 如何修改数据库字段来更改所有产品的 magento 1 税费?

ruby-on-rails - Rails 简单模型属性未保存到数据库

ruby-on-rails - rails object.association.count postgres 错误

ruby-on-rails - Rails 空 bool 值?

mysql - 为什么我的 SQL 语句显示的是函数名?

mysql - 提示用户在 MySQL 中输入一个变量

ruby-on-rails - 需要在特定时间运行作业

ruby-on-rails - 我有3.1.3时在3.0.10中创建新的Rails应用程序