     _parseNameField: (el) ->
       _.map el.attr("name").split("["), (p) -> p.replace("]", "")
 
+    # Gets the id of the record from the server
     id: -> this.get("id")
 
+    # The UID for the record object. This is generated randomly for each record and is never equal to the id()
     uid: -> this._uid
 
+    # Determines if the record is new or not. Looks at the id() and if it is set, then it's not new.
+    # Returns true or false
     isNew: -> !_.isNumber this.id()
 
+    # Displays the validations errors that came from the server response
     errors: -> this._errors
 
+    # Reset validation errors
     resetErrors: -> this._errors = {}
 
+    # When a record has been marked hasMany or hasOne, they become a child in that association.
+    # parent() is a convenient way to access the parent object.
+    # Example, Post.hasMany "comments"
+    # comment.parent() #=> post record
     parent: -> this._parent
 
+    # Deprecated
     tagId: -> this._tagId
 
+    # Generates JSON for the persistence request. You never need to call this but it's useful to look at
+    # for debugging purposes. You can also override this method to generate your own toJSON logic.
     toJSON: (options) ->
       baseObj = if options and options.child
         this._json = _.clone this.attributes()

      oneObj["clear_#{name}"] = -> association.clear()
      _.extend model.prototype, oneObj

    sanitize: (key, callback) ->
      this._sanitizers[key] = callback


    listAssociations: ->
      this._manyAssociations.concat this._oneAssociations

    # Sets a hasMany association for the model
    # Post.hasMany "comments"
    #
    # post.comments #=> [{comment1...}, {comment2...}]
    #
    # You can also extend the collection methods by using extend
    # Post.hasMany "comments",
    #   extend:
    #     popularComments: ->
    #       this.records = this.sortBy (comment) -> comment.position()
    hasMany: (name, options) ->
      this._manyAssociations.push name
      manyArray = {}
