2011-06-28 2 views
0

Lors de l'utilisation de Ruport pour créer un fichier CSV pour des entités contenant les mêmes entités, les noms de colonnes générés créent des conflits, provoquant Ruport à afficher uniquement la première occurrence de cette colonne. Pour cette explication abstraite plus claire et moins compliquée, un exemple:Noms de colonnes conflictuels dans la table de rapport Ruport

Ma classe Zone hérite de ServerUnitConfig, qui a un :belongs_to à un ServerUnit. Donc Zone a par exemple server_unit.su_name comme champ. Zone a également un :belongs_to pour Domain, qui hérite également de ServerUnitConfig.

Je veux à la fois à inclure dans mon Ruport et pour ce faire je l'argument :include suivant pour mon report_table de Ruport:

{    
    :server_unit => {:only => 'su_name'}, 
    :domain => {:include => {:server_unit => {:only => 'su_name'}}, :only => {} 
} 

rapports cela avec Ruport dans un fichier CSV, donne un rapport indiquant seulement la colonne server_unit.su_name de server_unit pas celle de Domain. Normalement aussi le server_unit.su_name devrait être montré, mais puisque Ruport montre seulement le nom de champ et son parent, les deux cas montrent server_unit.su_name et cela donne des conflits.

Je suggère de donner un nom personnalisé au champ dans l'include, mais je ne sais pas comment. Une autre idée, si ce serait possible, est de dire à Ruport d'une façon ou d'une autre que ce n'est pas un problème d'avoir des noms de colonnes identiques, mais je ne pense pas que ce soit possible. Quelqu'un a-t-il une idée pour résoudre ce problème? Cela m'aiderait beaucoup!

Merci

Daan

Répondre

0

Vous pouvez utiliser la méthode report_table_by_sql, qui est un peu laid. Ou utilisez l'option: method pour appeler une méthode avec un nom légèrement différent, pas génial non plus.

Il existe une option: qualified_attribute_names pour chaque inclusion utilisée en interne. J'ai écrit un patch ici: https://gist.github.com/1057518 qui l'exposer, vous pouvez l'utiliser comme ceci:

{:server_unit => {:qualify_attribute_names => 'serv', :only => 'su_name'}} 

Pour appliquer le patch, vous aurez besoin de « fournisseur » la pierre précieuse acts_as_reportable dans Rails, ce qui peut être douleur. Je vais essayer de le mettre sur le rapport principal au https://github.com/ruport/acts_as_reportable bientôt quand je suis sûr qu'il n'a aucun problème.

espoir qui aide, Andrew

+0

Merci beaucoup, Andrew! – Daan

+0

J'ai déjà découvert que les méthodes sont effectivement une option et donc je l'ai résolu de cette façon. Votre: qualified_attribute_names pourrait être un ajout utile au code. C'est encore beaucoup de travail pour la légère différence qu'il fait, mais il pourrait toujours être utile. Il fait la même chose que les méthodes, mais d'une manière beaucoup plus propre. Merci ... et tenez-moi au courant de votre plug-in. – Daan

Questions connexes