Salut,
Le titre de ce topic n'est peut-être pas très clair donc je vais expliquer plus clairement le problème que je rencontre :
Sur mon modèle Article, je souhaiterais faire un find selon plusieurs critères dont la date de création de l'article, mais aussi d'autres critères. Je ne parviens pas à mixer ces conditions.
Si je souhaite imposer que mon article ait été créé entre 2 dates from et to, je dois effectuer une requête du genre :
Article.find(:all, :conditions=> ['created_on BETWEEN ? AND ?', from, to ])
Et si je souhaite imposer le nom de son auteur et la catégorie, je peux faire:
Article.find(:all, :conditions=> {:auteur=>"Bob", :categorie=>"Sport"})
Si je veux mixer les 2 je peux bien sûr faire :
Article.find(:all, :conditions=> ['created_on BETWEEN ? AND ? AND auteur = ? AND categorie = ?', from, to, "Bob", "Sport" ])
MAIS cela suppose que les critères supplémentaires sont fixés par avance ("auteur" et "catégorie" ici). Or dans mon cas, ils ne sont pas définis à l'avance! Des critères supplémentaires peuvent apparaître, comme "sous_categorie" ou "public". J'ai donc besoin d'un système plus flexible que les conditions sous forme d'un Array.
J'ai un Hash de conditions formé de façon dynamique et un Array fixe, et je dois trouver un moyen de réunir les 2 pour faire mon find.
Quelqu'un voit une solution?
Partager