def destroy_model_storage(model, forced = false)
table_name = model.storage_name(name)
truncate_or_delete = self.class.auto_migrate_with
if storage_exists?(table_name)
if truncate_or_delete && !forced
statement = case truncate_or_delete
when :truncate
truncate_table_statement(model)
when :delete
delete_table_statement(model)
else
raise ArgumentError, "Unsupported auto_migrate_with option"
end
execute(statement)
@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 = self.class.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))
if table_is_truncated && !forced
statement = reset_sequence_statement(model)
else
statement = drop_sequence_statement(model)
end
execute(statement) if statement
end
end
true
end