如何在Ruby on Rails中编写任意SQL查询?

Kun*_*dan 3 sql activerecord ruby-on-rails

我随便学习,但我无法想象这一点.我目前的所有查询都是这样的MyObject.find(various conditions).返回一个MyObjects 数组,并且足以满足大多数目的.但现在我想创建一个最受欢迎的项目列表,查询类似select name, count(*) from MyObjects group by name order by 2.这不会返回MyObjects,这将返回任意数据列.那我该怎么做?

Nik*_*hil 5

如果您使用MyObject.find_by_sql来解决您的问题.您在select语句中使用的任何其他列都可以像往常一样通过返回的对象进行访问.例如,

    MyModelName.find_by_sql("select coulmn1, column2 as somenewname,
    column3 as someothername from....")
Run Code Online (Sandbox Code Playgroud)

这将返回每个都具有名为somenewname和someothername的属性的对象.

您可以查看文档以获取有关find_by_sql方法的更多信息.