J'essaye de mettre à jour mon application 3.0.5 de rails avec le rubis 2.3.4. À l'origine, c'était ruby 1.9.3. J'ai été capable de réparer la plupart des choses en mettant à jour les gemmes. Cependant, je suis bloqué sur ce problème où, lors de la création de nouveaux objets d'enregistrement actifs, l'heure ne se convertit pas correctement.Mise à niveau de ruby à 2.3.4 avec des rails 3.0.5
Par exemple
Product.new(:bought_on => Date.today)
sauverai l'objet avec bought_on
à la date, non datetime.
j'ai pu cerner le problème dans le fichier
activerecord-3.0.20/lib/active_record/attribute_methods/time_zone_conversion.rb
Pour une raison quelconque ce ne est pas appeler ces deux fonctions, define_method_attribute
et define_method_attribute=
.
Des idées?
Avez-vous essayé 'DateTime.now' à la place? 'Date.today' n'aura jamais de temps car il s'agit simplement d'une' date'. De même, avez-vous mis à jour 'ruby' mais avez laissé' rails' à '3.0' (vers 2010)? – engineersmnky
@engineersmnky, merci de répondre. La mise à niveau des rails de '3.0'' '4' serait beaucoup de refactorisation, je suis optimiste que seule la mise à jour de ruby' '2' fonctionnerait. – user3516436
J'ai trouvé le problème, le 'define_method_attribute' sous' time_zone_conversion.rb' est une méthode protégée, et dans ruby 2, la fonction 'respond_to' retourne toujours false pour les méthodes protégées. A dû corriger le singe pour enlever l'attribut protégé. – user3516436