Hello,

Je m'excuse d'avance de ne pas coller à ta problèmatique mais 
globalement ton approche est problématique et tu t'exposes à toute sorte de 
bug bizarre et de cas non controllé : tu utilises des accesseur statiques 
de configuration active record pour implémenter une sorte de single table 
inheritance. 
1) tu n'as aucune garantie de thread safety de l'accesseur statique 
"table_name" à priori et si ton rails utilise les options par default (= 
multithread), suivant ton serveur applicatif ca va péter aléatoirement lors 
de ton DetailInfo. Ce n'est pas le problème si ca pète sur ton environment 
local ceci dit, ton problème direct est sans doute plus "simple". Aussi en 
cas de crash au milieu du code tu es dans un état non controllé (quel 
table_name ?).
2) Ca va être lent car rails va rechercher toutes les colonnes de ton 
modèle à chaque changement de table_name, si tu alternes 40 fois dans une 
page, tu vas sans doute récupérer les colonnes et définir/invalider les 
accesseurs 40 fois aussi.
3) Ruby/Rails propose des facilités ultra pratiques pour ton 
problème 
http://www.gotealeaf.com/blog/understanding-polymorphic-associations-in-rails 
http://samurails.com/tutorial/single-table-inheritance-with-rails-4-part-1/ 
et plus généralement dans ton exemple du duck typing avec une association 
DetailsInfo qui pointe vers le bon modèle. Un bon conseil est de rester 
dans les grandes lignes d'utilisation d'un framework OU de ne pas 
l'utiliser sur ses apis haut niveaux.

Normalement en single threaded ca *devrait* marcher et AR *devrait *sweeper 
son cache et son query cache, donc le bug peut venir d'association qui 
cache la valeur OU de ton adapter spécifique à ta DB OU d'Arel. Dans les 
tous les cas sans debugger ca va être compliqué à trouver et ta meilleur 
change reste d'utiliser byebug directement ou de faire un git bisect sur le 
master de rails. Le bisect est plus adapté vu que tu ne sais pas ce que tu 
cherches, mais comme c'est sur une dépendance ca va te demander un peu de 
gemfile-fu car il faut mettre rails en local, linké ton project dessus et 
faire le bisect sur rails en testant sur ton app. L'avantage c'est que tu 
peux le faire en automatique si tu fais un bon test case cf 
https://robots.thoughtbot.com/git-bisect.

Bon courage, tu vas en avoir besoin :)

-- 
-- 
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
railsfrance-unsubscr...@googlegroups.com
--- 
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes 
Railsfrance.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, 
envoyez un e-mail à l'adresse railsfrance+unsubscr...@googlegroups.com.
Pour plus d'options, visitez le site https://groups.google.com/d/optout .

Reply via email to