diff --git a/VERSION b/VERSION index 524cb55..45a1b3f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.1.1 +1.1.2 diff --git a/couchrest_model.gemspec b/couchrest_model.gemspec index 4c873e8..fe58c09 100644 --- a/couchrest_model.gemspec +++ b/couchrest_model.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version= s.authors = ["J. Chris Anderson", "Matt Aimonetti", "Marcos Tapajos", "Will Leinweber", "Sam Lown"] - s.date = %q{2011-04-29} + s.date = File.mtime('VERSION') s.description = %q{CouchRest Model provides aditional features to the standard CouchRest Document class such as properties, view designs, associations, callbacks, typecasting and validations.} s.email = %q{jchris@apache.org} s.extra_rdoc_files = [ diff --git a/history.md b/history.md index 387f171..01f0c44 100644 --- a/history.md +++ b/history.md @@ -1,10 +1,11 @@ # CouchRest Model Change History -## 1.1.2 - 2011-07-XX +## 1.1.2 - 2011-07-23 * Minor fixes * Upgrade to couchrest 1.1.2 * Override as_couch_json to ensure nil values not stored + * Removing restriction that prohibited objects that cast as an array to be loaded. ## 1.1.1 - 2011-07-04 diff --git a/lib/couchrest/model/property.rb b/lib/couchrest/model/property.rb index f303b07..6058fda 100644 --- a/lib/couchrest/model/property.rb +++ b/lib/couchrest/model/property.rb @@ -43,9 +43,8 @@ module CouchRest::Model end end - # Cast an individual value, not an array + # Cast an individual value def cast_value(parent, value) - raise "An array inside an array cannot be casted, use Embeddable module" if value.is_a?(Array) value = typecast_value(value, self) associate_casted_value_to_parent(parent, value) end diff --git a/spec/unit/property_spec.rb b/spec/unit/property_spec.rb index 790beb4..ce4bd89 100644 --- a/spec/unit/property_spec.rb +++ b/spec/unit/property_spec.rb @@ -450,15 +450,18 @@ describe "Property Class" do ary.last.should eql(Date.new(2011, 05, 22)) end - it "should raise and error if value is array when type is not" do - property = CouchRest::Model::Property.new(:test, Date) + it "should cast an object that provides an array" do + prop = Class.new do + attr_accessor :ary + def initialize(val); self.ary = val; end + def as_json; ary; end + end + property = CouchRest::Model::Property.new(:test, prop) parent = mock("FooClass") - lambda { - cast = property.cast(parent, [Date.new(2010, 6, 1)]) - }.should raise_error + cast = property.cast(parent, [1, 2]) + cast.ary.should eql([1, 2]) end - it "should set parent as casted_by object in CastedArray" do property = CouchRest::Model::Property.new(:test, [Object]) parent = mock("FooObject")