diff --git a/elasticsearch-persistence/lib/elasticsearch/persistence/model.rb b/elasticsearch-persistence/lib/elasticsearch/persistence/model.rb index 3eb3c3a0d..8db15bd82 100644 --- a/elasticsearch-persistence/lib/elasticsearch/persistence/model.rb +++ b/elasticsearch-persistence/lib/elasticsearch/persistence/model.rb @@ -121,8 +121,8 @@ def deserialize(document) # Set up common attributes # - attribute :created_at, DateTime, default: lambda { |o,a| Time.now.utc } - attribute :updated_at, DateTime, default: lambda { |o,a| Time.now.utc } + attribute :created_at, Time, default: lambda { |o,a| Time.now.utc } + attribute :updated_at, Time, default: lambda { |o,a| Time.now.utc } attr_reader :hit end diff --git a/elasticsearch-persistence/lib/elasticsearch/persistence/model/store.rb b/elasticsearch-persistence/lib/elasticsearch/persistence/model/store.rb index 2963bc0aa..a6c44c998 100644 --- a/elasticsearch-persistence/lib/elasticsearch/persistence/model/store.rb +++ b/elasticsearch-persistence/lib/elasticsearch/persistence/model/store.rb @@ -53,10 +53,10 @@ def save(options={}) options.update index: self._index if self._index options.update type: self._type if self._type - response = self.class.gateway.save(self, options) - self[:updated_at] = Time.now.utc + response = self.class.gateway.save(self, options) + @_id = response['_id'] @_index = response['_index'] @_type = response['_type'] diff --git a/elasticsearch-persistence/test/integration/model/model_basic_test.rb b/elasticsearch-persistence/test/integration/model/model_basic_test.rb index f2d09a538..f3776b4a1 100644 --- a/elasticsearch-persistence/test/integration/model/model_basic_test.rb +++ b/elasticsearch-persistence/test/integration/model/model_basic_test.rb @@ -144,6 +144,20 @@ class ::Person assert found.updated_at > updated_at, [found.updated_at, updated_at].inspect end + should 'update the object timestamp on save' do + person = Person.create name: 'John Smith' + person.admin = true + sleep 1 + person.save + + Person.gateway.refresh_index! + + found = Person.find(person.id) + + # Compare without usec + assert_equal found.updated_at.to_i, person.updated_at.to_i + end + should "respect the version" do person = Person.create name: 'John Smith'