J'ai parfois à trier des listez objets sur un champ d'un objet (un objet qui contient un objet etc...) imbriqué, pour cela j'utilise dans le Objetrecherches.find(:all,:include[:objets1,:objets2],:conditions,:order "method1.method2")
avec Mysql cela fonctionne bien, mais avec Oracle la syntaxe générée n'est pas comprise par Oracle ? je ne sais pas bien pourquoi (il semble qu'il n'aime pas Left Outer Join ?).
alors j'ai écris un truc qui trie des objets ainsi:
@tableautrie=triimbriquesimple(Objetsrecherche.find(:all,:conditions))
avec
# va trier avec un critere ainsi rédigé "method1.method2.method3")
# ainsi je peux trier sur un champ quelconque d'un des objets imbriqués ?
def triimbriquesimple(hashnontrie,critere)
tabmethod=Array.new
tabmethod=critere.split(".")
hashatrie=Hash.new
tabtrie=Array.new
i=0
hashnontrie.each do |object|
objetcourant=object
tabmethod.each do |arg|
objetcourant=objetcourant.send(arg)
end
hashatrie[objetcourant.to_s+i.to_s]=object
i=i+1
end
hash=hashatrie.sort
hash.each do |key,value|
tabtrie.push(value)
end
return tabtrie
end
Séminaire "Cycle de vie d'une application Ruby On Rails" du 20 Mai
|
il y a 17 heures 16 min
il y a 1 semaine 16 heures
il y a 1 semaine 1 jour
il y a 1 semaine 1 jour
il y a 1 semaine 1 jour
il y a 1 semaine 6 jours
il y a 2 semaines 12 heures
il y a 2 semaines 3 jours
il y a 3 semaines 4 heures
il y a 3 semaines 1 jour