Trier un tableau d’active records de différentes classes par ordre décroissant
Voici comment trier un tableau d’active records par ordre décroissant :
destinationComments = self.destination_comments.where('deleted = ?', false)
hotelComments = self.hotel_comments .where('deleted = ?', false)
(destinationComments + hotelComments).sort_by(&:created_at).reverse
Si ca peut aider certaines personnes.
Si tu fais ça, tu récupèreras tous tes messages via ta base de donnée et tu les ordonnera en Ruby, ce qui coûtera beaucoup en performances.
De plus ici tu fais deux opérations, un tri ET un reverse, ce qui est encore plus couteux.
Ton SGBD a déjà des features de tri, et il le fera mieux et plus rapidement que Ruby car c’est son travail principal.
Solution: Message.all(:order => “created_at DESC”)
Oui, mais comment faire lorsque tu ne récupères pas les données directement de la base de donnée mais à travers un autre objet qui a une relation has_many.
Par exemple :
@hotel.activities => comment alors trier ces activités par ordre décroissant?
Merci!
Exactement pareil
Hotel.first.activities.all(:order => « created_at DESC »)
Je me suis mal exprimé, je voulais parler de lorsqu’on a un tableau de différentes classes, je ne sais pas comment faire proprement pour le trier hormis en utilisant cette technique. Si tu as une idée, je suis preneur !! (J’ai édité le post)