2017-07-13 3 views
1

Je souhaite que toutes les dates de la bibliothèque aient un format commun ("%d.%m.%Y") au lieu du format par défaut ("%Y-%d-%m"). Pour l'instant, je suis venu avec 3 approches différentes (et je ne aime pas l'un d'eux) pour accomplir ce que je veux. Toutes sont représentées ci-dessous dans l'ordre de la plus à moins douloureuse:Modifier la date par défaut au format to_s dans la portée de la bibliothèque

  1. définir explicitement tous les attributs avec des dates et les convertir dans le format nécessaire dans l'exportateur;
  2. redéfinir to_s méthode pour chaque instance Date avec le format nécessaire;
  3. définir un descendant personnalisé d'une classe Date avec une méthode personnalisée to_s.

Informations complémentaires:

  • L'objet initial peut avoir jusqu'à 3 imbrications avec les attributs de type Date sur chacun d'eux; Les noms des attributs du type Date peuvent varier; J'utilise Virtus gem.

La question est la suivante:

est-il une meilleure façon de gérer la question que je me bats avec (et sinon, quelle est la manière la plus élégante d'aller entre ceux qui sont déjà représentés ci-dessus)?

Répondre

1

Créer un autre module avec un raffinement Date::to_s

module MyDate 
    refine Date do 
    def to_s 
     # here goes your implementation of to_s 
    end 
    end 
end 

Et puis:

class NeedsCustomDateFormat 
    using MyDate 
    # All Date instances will have the custom to_s 
end