Sortowanie po asocjacji

Mam problem z wyświetlaniem plików, moja aplikacja:

class User
   has_many :downloads
   has_many :downloaded_files, :through => :downloads, source: :file
end

class File 
   attr_accessor :downloaded

   has_many :downloads
   has_many :users, :through => :downloads
end

class Download
   belongs_to :user
   belongs_to :file
end

I teraz potrzebuję aby po zalogowaniu się użytkownika wyświetliły mu się wszystkie pliki ale najpierw te których jeszcze nie pobrał a na końcu te które zostały już przez niego pobrane. Jako że tabela plików zawiera około 500 rekordów to potrzebuje ładnej i lekkiej metody. Macie jakieś pomysły ?

Rails 4.2.1 Ruby 2.2.2 Postgresql

@user.downloaded_files.order(...)

Pytanie brzmi, gdzie i w jaki sposób jest przechowywana informacja o tym, czy plik pobrano. Z powyższej struktury wynika, że ta informacja powinna być w modelu Download, tymczasem masz attr_accessor :downloaded w modelu File - jaka jest jego rola?

Rozwiązałem problem używając dwóch zapytań do bazy a później wyniki dodałem.
Pliki już pobrane:

@user_files = current_user.downloaded_files

Pliki jeszcze nie pobrane:

@other_files = File.where("NOT EXISTS (SELECT 1 FROM downloads WHERE file_id = files.id AND user_id = ?)", current_user.id)