2016-04-16 13 views
1

Manchmal müssen wir DateTime von Client akzeptieren:Wie Datetime in der Traube in params zu forma

params do 
    requires :time_to_arrive, type: DateTime, allow_blank: false 
end 

Wenn wir in der Konsole DateTime.now, sie es standardmäßig in diesem Format geben schreiben:

Sat, 16 Apr 2016 09:59:26 +0600 

Ist es möglich, das Format für die Annahme DateTime in Traube anzugeben?

+0

Sie meinen es in Sicht oder wo angeben? – Ilya

+0

@Ilya Ich meine, spezifizieren Sie es in 'params' Abschnitt, weil der Kunde, der Anträge stellt, nicht auf Ruby basierte Anwendung ist. –

Antwort

0

Versuchen, Ihre kundenspezifischen Art:

class MyDateTime 
    attr_reader :value 
    def initialize(datetime) 
    @value = datetime 
    end 

    def self.parse(value) 
    my_date_format = '%Y-%m-%dT%H:%M:%S%z' 
    dt = DateTime.strptime(value, my_date_format) 
    new(dt) 
    end 
end 


requires :time_to_arrive, type: MyDateTime, allow_blank: false 
0

Versuchen Sie, die coerce_with Option:

params do 
    requires :time_to_arrive, type: DateTime, coerce_with: DateTime.method(:iso8601), allow_blank: false 
end 

Auch wenn Ihre API aufrufen können Sie ISO8601-Format mit your_date_time_var.iso8601 angeben.