diff --git a/db/migrate/20200622155632_repository_table_state_update.rb b/db/migrate/20200622155632_repository_table_state_update.rb index 92f797946..c394ff786 100644 --- a/db/migrate/20200622155632_repository_table_state_update.rb +++ b/db/migrate/20200622155632_repository_table_state_update.rb @@ -8,8 +8,22 @@ class RepositoryTableStateUpdate < ActiveRecord::Migration[6.0] def up TempStateModel.find_each do |table_state| state = table_state.state - order_state = state['order'][0][0] - state['order'][0][0] = order_state + 2 if order_state > 5 + order_state = state.dig('order', 0, 0) + + unless order_state + order = state.dig('order', '0') + state['order'] = [order] + order_state = state.dig('order', 0, 0) + end + + state['order'][0][0] = order_state.to_i + 2 if order_state.to_i > 5 + + if state['columns'].is_a? Hash + columns_array = [] + state['columns'].each { |k, v| columns_array[k.to_i] = v } + state['columns'] = columns_array + end + 2.times do state['columns'].insert(6, 'search' => { @@ -17,9 +31,13 @@ class RepositoryTableStateUpdate < ActiveRecord::Migration[6.0] }, 'visible' => false) end - state['ColReorder'] = state['ColReorder'].map { |i| i > 5 ? i + 2 : i } + [6, 7] + if state['ColReorder'] + state['ColReorder'] = state['ColReorder'].map { |i| i.to_i > 5 ? i.to_i + 2 : i.to_i } + [6, 7] + end table_state.update(state: state) + rescue StandardError + # Corrupted state will be cleared and default state will be generated on load + table_state.update(state: {}) end end end -