从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示例一样。 我的问题是从一个表中的几个表中获取字段。
“查找”请求会是什么?
感谢您的帮助。
答案 0 :(得分:0)
您的基本查询类似于:
@books = Book.where("title LIKE ?", "%{something}%").joins(:author).order("author.name ASC, books.title ASC")
至于控制排序,您可以将其分解为根据您的参数有条件地添加的范围。