code: function(instance) {
      var cacheName = this._itemObjectsQueryCacheKey;
      if (!instance[cacheName]) {
        var where = _.object([
          [this.primaryKey, instance.getAttribute(this.foreignKeyAttr)],
        ]);
        var cacheResult = _.bind(this.associateFetchedObjects, this, instance);
        instance[cacheName] = this._relatedModel
          .objects.where(where).limit(1)
          .on('result', cacheResult);
      }
      return instance[cacheName];
    }
docs: The objects query property for this relation.
  
  This property allows you access to a query which you can use to fetch the
  object for a relation on a given model and/or to configure the query to
  build a new query with more restrictive conditions.
  
  When you fetch the object, the result will be cached and accessible via
  the {@link BelongsTo#collection} (if loaded).
  
  The value of this property is a query object that is cached so it will
  always be the exact same query object (see exceptions below). This allows
  multiple fetches to simply return the query's cached result. A simple
  {@link BaseQuery#clone} of the query will ensure that it is always
  performing a new query in the database.
  
  The cache of this property will be invalided (and the resulting object a
  new query object) when changes are made to the relation.
  
  It is currently not accessible on an individual model.
  
  @method
  @protected
  @param {Model} instance The model instance on which to operate.