From 92096b787dcd969d16bbe00bc32da602d2fafd18 Mon Sep 17 00:00:00 2001 From: Jan Hecking Date: Thu, 27 Jun 2013 13:13:43 +0800 Subject: [PATCH 1/2] add spec for couchrest/couchrest_model#167 --- spec/unit/base_spec.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/spec/unit/base_spec.rb b/spec/unit/base_spec.rb index 10119b5d..571a40b3 100644 --- a/spec/unit/base_spec.rb +++ b/spec/unit/base_spec.rb @@ -564,4 +564,19 @@ def set_name; self.name = "foobar"; end end end + describe "model inheritance" do + context "multiple models with same base class" do + it "should not overwrite property definitions of the same name in different models" do + class MyBase < CouchRest::Model::Base; end + class MyModelA < MyBase + property :prop, Time + end + class MyModelB < MyBase + property :prop, Integer + end + MyModelA.new(:prop => Time.now).prop.class.should eq Time + end + end + end + end From 03389d0a866ce02cd1e27962eca4c5140482c6df Mon Sep 17 00:00:00 2001 From: Jan Hecking Date: Thu, 27 Jun 2013 13:15:36 +0800 Subject: [PATCH 2/2] potential fix for couchrest/couchrest_model#167 --- lib/couchrest/model/base.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/couchrest/model/base.rb b/lib/couchrest/model/base.rb index bff4dd83..9d97979c 100644 --- a/lib/couchrest/model/base.rb +++ b/lib/couchrest/model/base.rb @@ -31,6 +31,7 @@ def self.inherited(subklass) def self.inherited(subklass) super subklass.properties = self.properties.dup + subklass.properties_by_name = self.properties_by_name.dup # This is nasty: subklass._validators = self._validators.dup end