Patch #41954 » 0011-Skip-empty-table.patch
| lib/tasks/extract_fixtures.rake | ||
|---|---|---|
| 51 | 51 |
ActiveRecord::Base.establish_connection |
| 52 | 52 |
tables = tables.present? ? tables : ActiveRecord::Base.connection.tables |
| 53 | 53 |
(tables - skip_tables).each do |table_name| |
| 54 |
columns = ActiveRecord::Base.connection.columns(table_name) |
|
| 55 |
column_names = columns.map(&:name) |
|
| 56 |
has_id_column = column_names.include?('id')
|
|
| 57 |
order_columns = has_id_column ? 'id' : column_names.join(', ')
|
|
| 58 |
where_clause = table_filters.has_key?(table_name) ? "WHERE #{table_filters[table_name]}" : ''
|
|
| 59 |
sql = "SELECT * FROM #{table_name} #{where_clause} ORDER BY #{order_columns}"
|
|
| 60 |
data = ActiveRecord::Base.connection.select_all(sql) |
|
| 61 |
if data.empty? |
|
| 62 |
next |
|
| 63 |
end |
|
| 54 | 64 |
i = "000" |
| 55 | 65 |
File.open(File.join(dir, "#{table_name}.yml"), 'w') do |file|
|
| 56 |
columns = ActiveRecord::Base.connection.columns(table_name) |
|
| 57 |
column_names = columns.map(&:name) |
|
| 58 |
has_id_column = column_names.include?('id')
|
|
| 59 |
order_columns = has_id_column ? 'id' : column_names.join(', ')
|
|
| 60 |
where_clause = table_filters.has_key?(table_name) ? "WHERE #{table_filters[table_name]}" : ''
|
|
| 61 |
sql = "SELECT * FROM #{table_name} #{where_clause} ORDER BY #{order_columns}"
|
|
| 62 |
data = ActiveRecord::Base.connection.select_all(sql) |
|
| 63 | 66 |
file.write data.inject({}) { |hash, record|
|
| 64 | 67 |
# omit default or nil values or cast extracted values with formatting time |
| 65 | 68 |
columns.each do |col| |