       @_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)


  _doProgress: (xhr) ->
    @_requests.push(xhr)
    if @_progressCounter <= 0 and @_progressElement
      @_progressElement.show()
    @_progressCounter++
    xhr.always =>

          hasOneCache: @_hasOneCache
          relationModelType: relationModelType
          attribute: attr
      else if options.remoteRefresh and options.remoteRefresh != 'first' and options.remoteRefresh != 'unless'
        @_hasOneCache[@cid].col.remoteRefresh
          lazyLoad: options.lazyLoad
      else if _.isFunction(options.lazyLoad)
