def destroy_model_storage(model, forced = false)
table_name = model.storage_name(name)
klass = self.class
truncate_or_delete = klass.auto_migrate_with
if storage_exists?(table_name)
if truncate_or_delete && !forced
case truncate_or_delete
when :truncate
execute(truncate_table_statement(model))
when :delete
execute(delete_table_statement(model))
else
raise ArgumentError, "Unsupported auto_migrate_with option"
end
@truncated_tables ||= {}
@truncated_tables[table_name] = true
else
execute(drop_table_statement(model))
@truncated_tables[table_name] = nil if @truncated_tables
end
end
reset_sequences = klass.auto_migrate_reset_sequences
table_is_truncated = @truncated_tables && @truncated_tables[table_name]
unless truncate_or_delete && !reset_sequences && !forced
if sequence_exists?(model_sequence_name(model))
statement = if table_is_truncated && !forced
reset_sequence_statement(model)
else
drop_sequence_statement(model)
end
execute(statement) if statement
end
end
true
end