2016-04-16 5 views
1

Parfois, nous devons accepter DateTime du client:Comment formater DateTime dans params en raisin

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

Si nous écrivons dans la console DateTime.now, il donnera dans ce format par défaut:

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

Est-il possible de spécifier le format pour accepter DateTime en raisin?

+0

Vous le spécifiez dans la vue ou où? – Ilya

+0

@Ilya Je veux dire le spécifier dans la section 'params', car le client qui va faire des demandes n'est pas une application basée sur Ruby. –

Répondre

0

Essayez de créer votre type personnalisé:

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

Essayez l'option coerce_with:

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

lorsque vous appelez votre API, vous pouvez spécifier le format ISO 8601 your_date_time_var.iso8601.