Ruby on rails 使用Rails/AR生成这个复杂的查询

Ruby on rails 使用Rails/AR生成这个复杂的查询,ruby-on-rails,ruby-on-rails-3,orm,activerecord,Ruby On Rails,Ruby On Rails 3,Orm,Activerecord,在尝试解决分组和排序问题(这里的原始问题:)时,我得到了一个SQL查询,它将以正确的方式获取正确的记录 我现在的问题是:如何使用Rails/AR synthax生成此SQL查询? SQL查询如下所示: SELECT u.id as owner_id, u.name as owner_name, t.id, t.due_date FROM users u INNER JOIN tasks m ON u.id = m.owner_id INNER JOIN tasks t ON u.id = t.o

在尝试解决分组和排序问题(这里的原始问题:)时,我得到了一个SQL查询,它将以正确的方式获取正确的记录

我现在的问题是:如何使用Rails/AR synthax生成此SQL查询?

SQL查询如下所示:

SELECT
u.id as owner_id, u.name as owner_name, t.id, t.due_date
FROM users u
INNER JOIN tasks m ON u.id = m.owner_id
INNER JOIN tasks t ON u.id = t.owner_id
GROUP BY u.id, u.name, t.id, t.due_date
ORDER BY MIN(m.due_date), t.due_date

我认为您需要使用数据库和这些属性来获得正确的结果,但您可以尝试类似的方法

class User < ActiveRecord::Base
   has_one :next_task, :class_name => :task, :order => "due_date desc", :limit => 1
   has_many :tasks, :order => "due_date desc"

end

class Task < ActiveRecord::Base
    belongs_to :user

end

User.include([:next_task,:tasks]).order("task.due_date desc").tasks.each { |task|
      puts task.user.owner_id 
      puts task.user.owner_name
      puts task.due_date
}
class用户:任务:订单=>“到期日描述”,“限制=>1
有多个:任务,:订单=>“到期日描述”
结束
类任务

我不确定order子句是否用于对用户进行排序。。。您必须检查生成的SQL,以确定需要的内容。

内部连接任务m ON u.id=m.owner\u id内部连接任务t ON u.id=t.owner\u id
-这不可能,它应该做什么?归结起来,我想根据父类的子类属性对其进行排序。此查询尝试采用不同的方法对子类进行分组(按父类)和排序(按属性)。任何一种方法都会对我有所帮助。你的评论让我在这里重新表述了这个问题@Jonas:查看原始问题,这是一种按用户任务的最小到期日对记录进行排序的方法。
include
不会生成
内部联接
,它会生成
左联接
。使用
连接