Модель
scope :completed_at, select("(
SELECT goals.created_at
FROM goals
WHERE goals.user_id = users.id
ORDER BY goals.created_at
LIMIT 1
) as completed_at
")
Контроллер
@users = User.select("email, first, last, created_at").completed_at.order("created_at ASC").limit(1).all
Результирующий SQL-запрос
SELECT email, first, last, created_at, (
SELECT goals.created_at
FROM goals
WHERE goals.user_id = users.id
ORDER BY goals.created_at
LIMIT 1
) as completed_at
FROM "users" ORDER BY created_at ASC LIMIT 5
Пример вывода JSON
"user": {
"completed_at": "2011-06-07 15:04:56",
"created_at": "2010-01-01T06:00:00Z",
"email": "user@user.com",
"first": "Test",
"last": "User"
}
Заметьте, как create_at выходит как UTC, а "complete_at" выходит по местному времени? Есть идеи, почему или как сделать так, чтобы они были в одном формате?