private function recurseRecord($method, $name, array $data, $index = null)
    {
        // Get model and determine primary key column
        $class = Str::camel($name);
        $model = $this->{$class}()->getModel();
        $primaryKey = (isset($model->primaryKey)) ? $model->primaryKey : 'id';

        $key = array_get($data, $primaryKey);

        // Find record and perform action on it
        $record = $model->findOrCreateRecord($key);
        $result = $record->recurse($method, $data, $this->getParameters('ruleset', $name), $this->getParameters('messageset', $name));

        // Capture errors
        $this->errors = $this->mergeErrors($this->errors, $record->getErrorBag(), $index);

        // Attach relationhip to record
        if ($result) $this->setRelationship($record, $name, $class, $index);

        // Record failure
        return $result;
    }