@@ -8,30 +8,38 @@ module Rails
8
8
def self . included ( base )
9
9
base . class_eval do
10
10
11
- # Decorates the passed in `attributes` so they extract the date & time values from Rails forms
12
- #
13
- # @example Correctly combine the date and time to a datetime string
14
- #
15
- # params = { "published_on(1i)"=>"2014",
16
- # "published_on(2i)"=>"1",
17
- # "published_on(3i)"=>"1",
18
- # "published_on(4i)"=>"12",
19
- # "published_on(5i)"=>"00"
20
- # }
21
- # MyRailsModel.new(params).published_on.iso8601
22
- # # => "2014-01-01T12:00:00+00:00"
23
- #
24
11
def initialize ( attributes = { } )
25
- day = attributes . select { |p | p =~ /\( [1-3]/ } . reduce ( { } ) { |sum , item | ( sum [ item . first . gsub ( /\( .+\) / , '' ) ] ||= '' ) << item . last +'-' ; sum }
26
- time = attributes . select { |p | p =~ /\( [4-6]/ } . reduce ( { } ) { |sum , item | ( sum [ item . first . gsub ( /\( .+\) / , '' ) ] ||= '' ) << item . last +':' ; sum }
27
- unless day . empty?
28
- attributes . update day . reduce ( { } ) { |sum , item | sum [ item . first ] = item . last ; sum [ item . first ] += ' ' + time [ item . first ] unless time . empty? ; sum }
29
- end
12
+ super ( __convert_rails_dates ( attributes ) )
13
+ end
30
14
31
- super ( attributes )
15
+ def update ( attributes = { } , options = { } )
16
+ super ( __convert_rails_dates ( attributes ) )
32
17
end
33
18
end
34
19
end
20
+
21
+ # Decorates the passed in `attributes` so they extract the date & time values from Rails forms
22
+ #
23
+ # @example Correctly combine the date and time to a datetime string
24
+ #
25
+ # params = { "published_on(1i)"=>"2014",
26
+ # "published_on(2i)"=>"1",
27
+ # "published_on(3i)"=>"1",
28
+ # "published_on(4i)"=>"12",
29
+ # "published_on(5i)"=>"00"
30
+ # }
31
+ # MyRailsModel.new(params).published_on.iso8601
32
+ # # => "2014-01-01T12:00:00+00:00"
33
+ #
34
+ def __convert_rails_dates ( attributes = { } )
35
+ day = attributes . select { |p | p =~ /\( [1-3]/ } . reduce ( { } ) { |sum , item | ( sum [ item . first . gsub ( /\( .+\) / , '' ) ] ||= '' ) << item . last +'-' ; sum }
36
+ time = attributes . select { |p | p =~ /\( [4-6]/ } . reduce ( { } ) { |sum , item | ( sum [ item . first . gsub ( /\( .+\) / , '' ) ] ||= '' ) << item . last +':' ; sum }
37
+ unless day . empty?
38
+ attributes . update day . reduce ( { } ) { |sum , item | sum [ item . first ] = item . last ; sum [ item . first ] += ' ' + time [ item . first ] unless time . empty? ; sum }
39
+ end
40
+
41
+ return attributes
42
+ end ; module_function :__convert_rails_dates
35
43
end
36
44
37
45
end
0 commit comments