Bonjour tout le monde.
Y a un truc qui est vraiment pas mal je trouve dans DataMapper (un
concurrent à ActiveRecord populaire du côté de Merb), c’est ce qu’ils
appellent l’identity map :
http://www.datamapper.org/why.html
L’idée c’est que si on fait plusieurs fois un find(id) sur la même
classe, on obtient le même objet.
C’est pas mal, notamment quand avec les associations on part voir un
autre objet, puis on remonte vers l’objet parent :
Car.has_many wheels
si on fait my_car.wheels.first.car on ne retombe pas sur l’objet
my_car avec ActiveRecord :
on a bien my_car == my_car.wheels.first.car,
mais pas my_car.object_id == my_car.wheels.first.car.object_id
Et surtout, ça retourne chercher l’objet en base de donnée, alors
qu’il a déjà été
chargé.
J’ai l’impression que le plugin ActiveRecordContext se rapproche pas
mal de ça.
GitHub - technoweenie/active_record_context: simple identity map for active record. eager loading associations FTL
Quelqu’un a déjà essayé ?
Je vois pas tellement les inconvénients que ça peut avoir (à part un
problème de performance quand on charge plein d’ActiveRecord
différents ?)
–
Arthur