Rails - Array#uniq使いたいのにActiveRecord::QueryMethods#uniqが呼ばれてしまう

たとえばシルバ作の本で、タイトルの一文字目が一緒だったら同じ本とみなすような不可解な取り方をしたいとき、

books = Book.where(author: "シルバ")
books.uniq{|book| book.title.first}

こうすると遅延評価の影響でuniqがSQLのdistinctとみなされてしまう
しょうがないからuniqを自分で行うことにした

books_hash = {}
Book.where(author: "シルバ").each do |book|
  books_hash[book.title.first] = book
end
books_hash.values

SQLを強制的に発行させるメソッドないかな