diff --git a/lib/volt/models/model.rb b/lib/volt/models/model.rb
index <HASH>..<HASH> 100644
--- a/lib/volt/models/model.rb
+++ b/lib/volt/models/model.rb
@@ -40,7 +40,7 @@ module Volt
 
     # the id is stored in a field named _id, so we setup _id to proxy to this
     def _id
-      @attributes && @attributes[:_id]
+      __id
     end
 
     def _id=(val)
diff --git a/lib/volt/models/persistors/model_store.rb b/lib/volt/models/persistors/model_store.rb
index <HASH>..<HASH> 100644
--- a/lib/volt/models/persistors/model_store.rb
+++ b/lib/volt/models/persistors/model_store.rb
@@ -36,8 +36,9 @@ module Volt
 
       # Called the first time a value is assigned into this model
       def ensure_setup
-        if @model.attributes
-          @model.attributes[:_id] ||= generate_id
+        if (attrs = @model.attributes)
+          # Do a nil check incase there is a nil model there
+          @model.__id = generate_id if attrs[:_id].nil?
 
           add_to_identity_map
         end
fix issue with _id not being set