Rails:在一个查询中从连接表中获取字段

时间:2014-05-31 12:42:32

标签: ruby-on-rails join

从rails开始,我想创建一个动态选择和动态排序的请求,如下面的例子(在SQL中):

    select * from books join authors on author_id = books.id 
    where books.title like '%something%'
    order by author.name, books.title

    select * from books join authors on author_id = books.id 
    where books.title like '%something%'
    order by books.title, author.name

作者has_many书籍,书籍属于作者。

我使用两个嵌套循环对其进行编码。在第一种情况下,首先读取作者(按名称排序)然后读取书籍(按标题排序),在第二种情况下,先读书然后读取作者。 然后,我可以将书籍字段和作者字段打印在一起。 循环必须反映排序字段的层次结构。

但是存在许多其他字段,动态选择/排序可以是任何字段。

有没有办法编写单个'each'循环,其中books字段和authors字段可以一起使用,就像上面的sql示例一样。 我的问题是从一个表中的几个表中获取字段。

“查找”请求会是什么?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您的基本查询类似于:

@books = Book.where("title LIKE ?", "%{something}%").joins(:author).order("author.name ASC, books.title ASC")

至于控制排序,您可以将其分解为根据您的参数有条件地添加的范围。