diff --git a/lib/couchrest/mixins/properties.rb b/lib/couchrest/mixins/properties.rb index b1dddd5..e627186 100644 --- a/lib/couchrest/mixins/properties.rb +++ b/lib/couchrest/mixins/properties.rb @@ -53,6 +53,9 @@ module CouchRest # Auto parse Time objects self[property.name] = if ((property.init_method == 'new') && target == 'Time') self[key].is_a?(String) ? Time.parse(self[key].dup) : self[key] + elsif + ((property.init_method == 'new') && target == 'Date') + self[key].is_a?(String) ? Date.parse(self[key].dup) : self[key] else # Let people use :send as a Time parse arg klass = ::CouchRest.constantize(target) diff --git a/spec/couchrest/more/property_spec.rb b/spec/couchrest/more/property_spec.rb index 95899aa..f8626f1 100644 --- a/spec/couchrest/more/property_spec.rb +++ b/spec/couchrest/more/property_spec.rb @@ -122,7 +122,7 @@ describe "ExtendedDocument properties" do describe "casting" do describe "cast keys to any type" do before(:all) do - event_doc = { :subject => "Some event", :occurs_at => Time.now } + event_doc = { :subject => "Some event", :occurs_at => Time.now, :end_date => Date.today } e = Event.database.save_doc event_doc @event = Event.get e['id'] @@ -130,6 +130,9 @@ describe "ExtendedDocument properties" do it "should cast occurs_at to Time" do @event['occurs_at'].should be_an_instance_of(Time) end + it "should cast end_date to Date" do + @event['end_date'].should be_an_instance_of(Date) + end end end diff --git a/spec/fixtures/more/event.rb b/spec/fixtures/more/event.rb index c36527a..b1ca6e3 100644 --- a/spec/fixtures/more/event.rb +++ b/spec/fixtures/more/event.rb @@ -3,4 +3,7 @@ class Event < CouchRest::ExtendedDocument property :subject property :occurs_at, :cast_as => 'Time', :send => 'parse' + property :end_date, :cast_as => 'Date' + + end \ No newline at end of file