Len som predpokladal, že nejaká koľajnicová mágia budeautomaticky konvertuje prichádzajúci príspevok s unixovým časom 1345069440000 na vhodný dátum a čas na backende. Mám však modelovú udalosť s dátumom s názvom „start_at“ a:
e = Event.new()
e.start_at = 1345069440000
e.save
Zdá sa, že to odosiela 1345069440000 rovno a potom to mysql zruší. To isté s rubínovým časom
e = Event.new()
e.start_at = 1345069440
e.save
ak nastavím na ľubovoľné reťazce, urobí to lepšiu prácu pri odvodzovaní:
e.start_at = "1/1344/12"
e.save
nastavuje dátum na „1334-12-01 00:00:00 UTC +00: 00“. Robí to teda pokus.
Je zrejmé, že môžem prepísať nastavovača vo svojej triede, ale dúfal som, že toto správanie zmením oveľa vyššie, aby všetky ovládače podporovali unixové časy pre akýkoľvek odovzdaný dátum a čas.
Koľajnice 3.2, Ruby 1.9.2
odpovede:
1 pre odpoveď č. 1Zdá sa, že tento kód je z active_record/attribute_methods/time_zone_conversion.rb
sa pokúša vykonať konverziu:
unless time.acts_like?(:time)
time = time.is_a?(String) ? Time.zone.parse(time) : time.to_time rescue time
end
Jednou z možností (aj keď trochu ťažkopádnych) by bolo opičie patchovanie Fixnum na pridanie metódy .to_time:
def to_time
Time.at(self)
end