Использование Rails / AR для генерации этого сложного запроса - PullRequest
1 голос
/ 05 апреля 2011

Пытаясь решить проблему группировки и упорядочения (оригинальный вопрос здесь: «Сложная» группировка и индексация в рельсах? ), я получил SQL-запрос, который будет правильно выбирать записи.

Теперь у меня вопрос: как мне сгенерировать этот SQL-запрос с помощью Rails / AR synthax?

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

1 Ответ

0 голосов
/ 06 апреля 2011

Я думаю, что вам нужно поэкспериментировать с вашей базой данных и этими атрибутами, чтобы все было правильно, но вы можете попробовать что-то вроде этого.

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
}

Я не уверен насчет предложения порядкачтобы отсортировать пользователей ... вам придется проверять сгенерированный SQL, чтобы точно определить, что там должно быть.

...