def save(options={})
      puts 'SAVING: ' + self.inspect if SimpleRecord.logging?
        # todo: Clean out undefined values in @attributes (in case someone set the attributes hash with values that they hadn't defined)
      clear_errors
        # todo: decide whether this should go before pre_save or after pre_save? pre_save dirties "updated" and perhaps other items due to callbacks
      if options[:dirty]
#                puts '@dirtyA=' + @dirty.inspect
        return true if @dirty.size == 0 # Nothing to save so skip it
      end

      ok = pre_save(options) # Validates and sets ID
      if ok
        if @@active_model
          ok = create_or_update(options)
        else
          ok = do_actual_save(options)
        end
      end
      return ok
    end
def save(options={})
      puts 'SAVING: ' + self.inspect if SimpleRecord.logging?
        # todo: Clean out undefined values in @attributes (in case someone set the attributes hash with values that they hadn't defined)
      clear_errors
        # todo: decide whether this should go before pre_save or after pre_save? pre_save dirties "updated" and perhaps other items due to callbacks
      if options[:dirty]
#                puts '@dirtyA=' + @dirty.inspect
        return true if @dirty.size == 0 # Nothing to save so skip it
      end

      ok = pre_save(options) # Validates and sets ID
      if ok
        if @@active_model
          ok = create_or_update(options)
        else
          ok = do_actual_save(options)
        end
      end
      return ok
    end
Options:
   - :except => Array of attributes to NOT save
   - :dirty => true - Will only store attributes that were modified. To make it save regardless and have it update the :updated value, include this and set it to false.
   - :domain => Explicitly define domain to use.