Rails 3:对在一个查询中使用 has_many 和 Belongs_to 关联的查询进行排序

发布于 2024-10-19 20:04:34 字数 355 浏览 3 评论 0原文

在我的 Rails 数据库方案中有以下结构:

任务有很多工作 作业属于一个类别

我想要实现的是加载所有任务以及按其类别排序的所有关联作业。所以结果应该是这样的:

task1 工作1 ->类别1 工作3->类别2 工作2->类别3

任务3 工作5->类别1 工作9->类别2 工作4-> category3

注意:类别的顺序不是它们的 ID,而是一列。

目前唯一有效的解决方案是使用 Ruby 而不是 SQL 来排序作业,这非常糟糕。我刚刚偶然发现了 has_many 关联中的 :finder_sql 选项,但我不确定这是否是正确的方法。

In my Rails db scheme there is the following structure:

tasks has many jobs
jobs belongs to one category

What I want to achieve is to load all tasks with all the associated jobs ordered by their category. So the result should look something like this:

task1
job1 -> category1
job3 -> category2
job2 -> category3

task3
job5 -> category1
job9 -> category2
job4 -> category3

Note: the ordering of the categories is not their ID, it is a column.

Right now the only working solution is to order the jobs in Ruby and not SQL, which is pretty bad. I just stumpled on the :finder_sql option in the has_many association, but I am not sure if that's the way to go.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

后eg是否自 2024-10-26 20:04:34

这将生成正确的 sql,但我不确定 ActiveRecord 是否会保留关联中的顺序:

Task.find(:all, :include => {:job => :category }, :order =>; 'tasks.id,categories.column')

This would generate the correct sql, but Im not sure ActiveRecord wil preserve the order in the association:

Task.find(:all, :include => {:job => :category }, :order =>'tasks.id, categories.column')

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文