Hola a todos,
Espero que alguien me puede ayudar. quiero ordenar los artistas de mi
aplicación en base a cuantas veces se
han reproducido sus canciones, pero no consigo dar con ello.
Supongo que deberÃa ser algo asÃ:
class Artist < ActiveRecord::Base
def playCount
tracks.sum(:play_count)
end
end
Artist.find(:all, :order => playCount)
El problema es que no me reconoce el método playCount. El método
playCount funciona correctamente si es llamado
desde un artista (Artist.find(:first).playCount => 16), pero dentro del
método find no lo reconoce
Un saludo y gracias
Paco G. wrote:
Hola a todos,
Espero que alguien me puede ayudar. quiero ordenar los artistas de mi
aplicación en base a cuantas veces se
han reproducido sus canciones, pero no consigo dar con ello.
Supongo que deberÃa ser algo asÃ:
class Artist < ActiveRecord::Base
def playCount
tracks.sum(:play_count)
end
end
Artist.find(:all, :order => playCount)
El problema es que no me reconoce el método playCount. El método
playCount funciona correctamente si es llamado
desde un artista (Artist.find(:first).playCount => 16), pero dentro del
método find no lo reconoce
Un saludo y gracias
El :order aplica un “order by” en el SQL, el atributo playCount no
existe en tu base de datos, por eso dice que no lo reconoce.
Para ordenarlos podrias hacer:
Artist.find(:all).sort{|a1, a2| a1.playCount <=> a2.playCount }
o
Artist.find(:all).sort_by(&:playCount)
Aca se habla de lo mismo: Ordenar por campos virtuales - ES - Ruby-Forum