code: function query (args) {
      // get relation
      var relation = this.model.relation(args.relation)
      // delete relation name from args so it wont pass to query
      delete args.relation
      // build query args
      var queryArgs = {
          session: args.session || this.session,
          where: { relation: { name: this.model.name } },
      }
      // relation is via a linking table
      if (relation.via) {
          // query by current records ids
          queryArgs.where.relation[relation.viaModelIdColumn] = this[this.model.defaultColumns[relation.modelIdColumn]]
      }
      // relation is direct
      else {
          // query by current records ids
          queryArgs.where.relation[relation.relationIdColumn] = this[this.model.defaultColumns[relation.modelIdColumn]]
      }
      // merge args
      _.merge(queryArgs, args)
      // do query on related model
      return relation.model.query(queryArgs)
  }
docs: @function query
  
  query related records
  
  @param {object} args
  
  @returns {Promise}
  
  @throws {Error}