Ruby Forum Rails France > Rails et les recherches en base de données

Posted by Mickael Gerard (Guest)
on 02.05.2008 19:32
(Received via mailing list)
Bonjour,

Ma question concerne les "limitations" s'il y en des ORM (AR, 
datamapper,
...) utilisés avec Rails.

Plus particulièrement je voulais savoir s'ils étaient bien adaptés pour 
des
applications se basant sur un model assez complexe (plus de 8 entités
métiers avec des liaisons N:N) sur lequel des recherches sont à faire en
utilisant des critères d'un peu toutes les entités du model.

Un exemple de model pourrait tout à fait être un annuaire d'une grosse
boite  avec des  Business Unit contenant des services, avec des 
personnes
ayant des fonctions dans les différents services etc..
La recherche de personnes se ferait alors à partir de critères de la BU, 
ou
du service, ou encore à partir d'un nom, ou d'une fonction.
Par exemple :
 * "je cherche la liste des chefs de Service qui s'appelle Paul".
 * "je cherche tous les developpeurs du service R&D bossant sur des 
technos
web".
 * ...

Est ce que les ORM utilisables avec Rails permettent, (sont conçus pour)
exécuter ce genre de requêtes sans tout avoir à faire à la main?

Cette question fait partie à mon sens des questions à ce poser lors du 
choix
de la techno à utiliser pour réaliser une appli.
En java je sais qu'hibernate et son api Criteria aide beaucoup. Je 
voulais
savoir ce qu'il en était coté Rails.

Ou encore avoir un retour sur votre expérience concernant la mise en 
oeuvre
de recherches en base un peu "touchies".


Merci d'avance.

Mickael
Posted by Claude Rousseau (clauder357)
on 04.05.2008 14:03
> La recherche de personnes se ferait alors à partir de critères de la BU, 
> ou
> du service, ou encore à partir d'un nom, ou d'une fonction.
> Par exemple :
>  * "je cherche la liste des chefs de Service qui s'appelle Paul".
>  * "je cherche tous les developpeurs du service R&D bossant sur des 
> technos
> web".

> Est ce que les ORM utilisables avec Rails permettent, (sont conçus pour)
> exécuter ce genre de requêtes sans tout avoir à faire à la main?

> Merci d'avance.
> 
> Mickael

Michael, je crois qu'on cherche la même chose; j'ai trouvé ceci:

http://wiki.rubyonrails.org/rails/pages/UnderstandingPolymorphicAssociations

J'essaie de réorganiser mon data model pour les utiliser.
Posted by Baptiste Decroix (Guest)
on 04.05.2008 14:25
(Received via mailing list)
Le 2 mai 2008 19:31, Mickael Gerard <mikarun@gmail.com> a écrit :
>
Avec les associations correctes, tu peux faire toutes les requêtes ou
presque sans utiliser de SQL directement:
Annuaire.find("MaBoite").services.find_all_by_fonction("Chef",
:conditions => "name ='Paul'")
Tu peux simplifier ces écritures en "étendant" des associations:
Par exemple ajouter ca dans ton modele Annuaire:
:has_many services do
  def chefs
    find_all_by_fonction("Chef")
  end
end
Te permet de simplifier la requete précédente par:
Annuaire.find("MaBoite").services.chefs.find_by_name("Paul")
etc.
Plein d'autres astuces te permettent de t'affranchir du SQL dans 95% des 
cas.

> Est ce que les ORM utilisables avec Rails permettent, (sont conçus pour)
> exécuter ce genre de requêtes sans tout avoir à faire à la main?
>
Pour résumé, oui


--
Baptiste