   # @note Method generate add_x, where `x` it's a attribute from `@has_many` or `@has_one`
   constructor: (obj = {}) ->
     @logger = Sirius.Application.get_logger()
-    @_is_valid = false
     @callbacks = []
     # object, which contain all errors, which registers after validation
     @errors = {}
     @attributes = @normalize_attrs()
     name = Sirius.Utils.fn_name(@constructor)
     @errors = {}
+    @_is_valid_attr = {} # save pair attribute and validation state
 
     for attr in @attrs()
       # @attrs: [{key: value}]


        if !result # when `validate` return false
          @errors[key][validator_key] = klass.error_message()
        else #when true, then need set null for error
          @errors[key][validator_key] = ""

    )

    for key, value of @errors
      for k, v of value when v != ""
        @_is_valid = true

  # @param [String] - attr name, if attr not given then return `errors` object,
  # otherwise return array with errors for give field

  save: (exception = false) ->
    @validate()
    name = @constructor.name
    throw new Error("#{name} model not valid!") if exception && !@is_valid()
    return false if @is_valid()
    true

  #
