2012-05-24 10 views
5

मैं गंभीरता से उलझन में हूं कि क्या गलत हो सकता है।समयकोष में अपडेट नहीं होने पर

मैं heroku run console में लॉग इन हूं और अपने डेटाबेस पर एक टाइमस्टैम्प अपडेट करने का प्रयास कर रहा हूं।

मैं User.find(6) दौड़े हैं उपयोगकर्ता एक :next_click = 2000-01-01... मैं क्यों यह है कि मूल्य नहीं जानता है कि देखने के लिए, लेकिन वैसे भी, मैं User.update 6, {:next_click => Time.utc(2015)} करते हैं और इसे लेकिन जब मैं एक User.find(6) ऐसा लगता है करते हैं, 2015-01-01 00:00:00 कह ठीक से अद्यतन करने के लिए लगता है समय वापस स्विच हो गया है क्योंकि यह 2015-01-01 00:00:00 नहीं है।

मैं वास्तव में उलझन में हूं कि यह क्यों नहीं है। कोई अंतर्दृष्टि?

संलग्न स्क्रीनशॉट देखें enter image description here

irb(main):033:0> User.update 6, {:next_click => Time.utc(2015) } 
    User Load (34.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 6]] 
    (1.8ms) BEGIN 
    (2.2ms) UPDATE "users" SET "next_click" = '2015-01-01 00:00:00.000000', "updated_at" = '2012-05-24 00:13:26.197358' WHERE "users"."id" = 6 
    (2.2ms) COMMIT 
=> #<User id: 6, name: "mazlix", gold: 10, points: 10, next_click: "2015-01-01 00:00:00", created_at: "2012-05-23 23:40:39", updated_at: "2012-05-24 00:13:26"> 
irb(main):034:0> User.find(6) 
    User Load (2.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 6]] 
=> #<User id: 6, name: "mazlix", gold: 10, points: 10, next_click: "2000-01-01 00:00:00", created_at: "2012-05-23 23:40:39", updated_at: "2012-05-24 00:13:26"> 

एक ही बात तो u = User.find(6)u.next_click = Time.utc(2013)u.save

irb(main):001:0> u = User.find(6) 
    User Load (38.8ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 6]] 
=> #<User id: 6, name: "mazlix", gold: 10, points: 10, next_click: "2000-01-01 00:00:00", created_at: "2012-05-23 23:40:39", updated_at: "2012-05-24 00:57:28"> 
irb(main):002:0> u.next_click = Time.utc(2013) 
=> 2013-01-01 00:00:00 UTC 
irb(main):003:0> u 
=> #<User id: 6, name: "mazlix", gold: 10, points: 10, next_click: "2013-01-01 00:00:00", created_at: "2012-05-23 23:40:39", updated_at: "2012-05-24 00:57:28"> 
irb(main):004:0> u.save 
    (10.9ms) BEGIN 
    (3.7ms) UPDATE "users" SET "next_click" = '2013-01-01 00:00:00.000000', "updated_at" = '2012-05-24 03:05:46.059530' WHERE "users"."id" = 6 
    (2.2ms) COMMIT 
=> true 
irb(main):005:0> u 
=> #<User id: 6, name: "mazlix", gold: 10, points: 10, next_click: "2013-01-01 00:00:00", created_at: "2012-05-23 23:40:39", updated_at: "2012-05-24 03:05:46"> 
irb(main):006:0> User.find(6) 
    User Load (33.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 6]] 
=> #<User id: 6, name: "mazlix", gold: 10, points: 10, next_click: "2000-01-01 00:00:00", created_at: "2012-05-23 23:40:39", updated_at: "2012-05-24 03:05:46"> 

app/models/user.rb:

class User < ActiveRecord::Base 
    attr_accessible :gold, :name, :next_click, :points 
end 
+0

संलग्न स्क्रीन शॉट अस्पष्ट है। कृपया कॉपी और एक आकार है कि पढ़ा जा सकता है में पेस्ट पाठ। –

+0

क्षमा करें, मैं पाठ को शामिल किया है ... – mazlix

+1

वहाँ हो सकता है आपके द्वारा बनाए जा रहे अपडेट को ओवरराइड करने वाली तालिका पर ट्रिगर करें? –

उत्तर

6
के साथ होता है

आपने एक समय कॉलम बनाया है। थोड़ा उलझन में, भले ही रूबी Time डाटाबेस दुनिया में दिन की तारीख (यानी बस घंटे/मिनट/सेकेंड) की अवधारणा मौजूद है, और समय के कॉलम को जोड़ते समय आपको वह मिलता है: समय आपका प्रवासन

रूबी के पास ऐसी कक्षा नहीं है जो बिना किसी तारीख के एक समय का प्रतिनिधित्व करती है, इसलिए रेल Time के उदाहरण का उपयोग करती है लेकिन डेट बिट को अनदेखा करती है।

आप एक स्तंभ है कि दोनों समय और तारीख को संग्रहीत करता है चाहते हैं, के लिए एक कॉलम बदलने के लिए: datetime एक (आप अभी भी अपने ActiveRecord में ज्यादातर मामलों में वापस एक Time उदाहरण मिल जाएगा

1

डेटा प्रकार का उपयोग कर सकते हैं। एक :timestamp या :datetime सही दिनांक स्वरूप स्टोर करने के लिए।

संबंधित मुद्दे

 संबंधित मुद्दे