       @_hasOneCache = {} unless @_hasOneCache
       @_hasOneCache[@cid] = {col: null, ids: []} unless @_hasOneCache[@cid]
       unless @_hasOneCache[@cid].col
+        if options.remoteRefresh == undefined
+          options.remoteRefresh = 'unless'
+
         if options.remoteRefresh
-          remoteRefresh = true
-        else if options.remoteRefresh == undefined
-          options.remoteRefresh = 'first'
-          remoteRefresh = true
+          if @_hasOneCache[@cid].ids.length and options.remoteRefresh == 'unless'
+            remoteRefresh = false
+          else
+            remoteRefresh = true
         else
           remoteRefresh = false
         relationModelType = _.result(@hasOne, attr)

              throw "Valid not yet supported! Please consider reporting this bug with Object type"
          @_hasOneCache = {} unless @_hasOneCache
          @_hasOneCache[@cid] = {col: null, ids: []} unless @_hasOneCache[@cid]
          @_hasOneCache[@cid].ids.push(id)
          @_hasOneCache[@cid].col.refresh() if @_hasOneCache[@cid].col
          @trigger("change:#{key}", @)


    @parent.on 'remove', (model) => @_onChildRemove(model)
    @child.on 'remove', (model) => @_onChildRemove(model)
    @child.clear = => @clear()
    @child.comparator = (model) =>
      return @relation.subset[@relatedModel.cid].ids.indexOf(model.cid)

  clear: ->
    modelsToRemove = []
