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| |