Вот моя оригинальная проблема.У меня есть две модели, как показано ниже.
class Author < ActiveRecord::Base
has_many :books
end
и
class Book < ActiveRecord::Base
belongs_to :author
scope :available, ->{ where(available: true) }
end
Я хотел бы оставить автора в области Книги "Доступно".Ниже приведен запрос, который я хотел бы выполнить в БД.Возможно ли это сделать?
Select authors.* , count(books.*) as books_count
From authors left outer join books on books.author_id = authors.id
and books.available = true
group by (authors.id) order by books_count;
Я пробовал следующий метод
Author.joins("LEFT OUTER JOIN authors on books.author_id = authors.id")
.merge(Book.available)
.select("authors.* , count(books.*) as books_count")
.group("authors.id").order("books_count")
Но это приводит к следующему запросу.
Select authors.* , count(books.*) as books_count
From authors left outer join books on books.author_id = authors.id
where books.available = true
group by (authors.id) order by books_count;
Так что удалить всеавторы, у которых нет книги.
Важно: В моей версии AR нет метода left_outer_joins