public function rules($key = null, $operation = null)
    {
        $ruleName = $operation ? "{$operation}Rules" : 'defaultRules';

        $ruleName = method_exists($this, $ruleName) ? $ruleName : 'defaultRules';

        $rules = $this->{$ruleName}();

        if (is_null($key)) {
            return $this->rules;
        }

        return is_array($key) ? array_only($this->rules, $key) : $this->rules[$key];
    }