J'ai la colonne Heure dans ma table. et dans /config/application.rb
suis ayant l'énoncé suivant. config.time_zone = 'Mumbai'
.La colonne Heure n'affiche pas l'heure dans la zone de temps dans laquelle elle est enregistrée, dans Rails?
et iam gagner du temps dans la base de données, avec la requête suivante
punch_rec.check_out = Time.now
punch_rec.save
Lorsque je tape la Time.now dans le terminal, il indique l'heure suivante.
2.2.2 :032 > Time.now
=> 2015-09-28 15:59:06 +0530
et lorsque je récupère les données de la base de données, le temps qu'il affiche dans UTC
time_zone. à cause de cela, à mon avis, le temps affiche mal.
ce sont les étapes de l'exécution de iam.
2.2.2 :038 > p = PunchInOut.find_by_id("28")
PunchInOut Load (0.3ms) SELECT `punch_in_outs`.* FROM `punch_in_outs` WHERE `punch_in_outs`.`id` = 28 LIMIT 1
=> #<PunchInOut id: 28, employee_id: 3, check_in: nil, check_out: nil, date: "2015-09-28", created_at: "2015-09-28 18:37:24", updated_at: "2015-09-28 10:25:22", shift_id: nil, shift_name: nil>
2.2.2 :039 > p.check_in
=> nil
2.2.2 :040 > Time.now
=> 2015-09-29 00:19:17 +0530
2.2.2 :041 > p.check_in= Time.now
=> 2015-09-29 00:19:33 +0530
2.2.2 :042 > p.save
(0.3ms) BEGIN
SQL (0.7ms) UPDATE `punch_in_outs` SET `check_in` = '2015-09-28 18:49:33', `updated_at` = '2015-09-28 18:49:38' WHERE `punch_in_outs`.`id` = 28
(37.7ms) COMMIT
=> true
2.2.2 :043 > p = PunchInOut.find_by_id("28")
PunchInOut Load (0.6ms) SELECT `punch_in_outs`.* FROM `punch_in_outs` WHERE `punch_in_outs`.`id` = 28 LIMIT 1
=> #<PunchInOut id: 28, employee_id: 3, check_in: "2000-01-01 18:49:33", check_out: nil, date: "2015-09-28", created_at: "2015-09-28 18:37:24", updated_at: "2015-09-28 18:49:38", shift_id: nil, shift_name: nil>
2.2.2 :044 > p.check_in
=> 2000-01-01 18:49:33 UTC
2.2.2 :045 >
comment puis-je résoudre ce problème.
Rails enregistre tous les temps à la base de données en UTC par défaut, puis ils sont affichés ** ** dans le fuseau horaire approprié, en cours de conversion à la volée. Donc, je m'attendrais à ce que la vue montre le temps correctement converti. Pouvez-vous ajouter les informations suivantes à votre question: a) à quelle heure pensez-vous que att.check_out devrait être défini sur b) ce qui est stocké dans la base de données, sans le convertir (regardez dans votre terminal db plutôt que d'utiliser Rails c) ce qui est affiché lorsque vous faites '<% = att.check_out%>' –
@MaxWilliams J'ai mis à jour ma question. – John
@MaxWilliams, si les rails sont sauvegardés à chaque fois en temps UTC. alors quelle est l'utilisation ('config.time_zone = 'Mumbai'') de cette déclaration? que va-t-il faire? – John