20180220171219_check_for_object_attributes.rb 933 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. class CheckForObjectAttributes < ActiveRecord::Migration[5.1]
  2. def change
  3. return if !Setting.find_by(name: 'system_init_done')
  4. attributes.each do |attribute|
  5. fix_nil_data_option(attribute)
  6. fix_options(attribute)
  7. fix_relation(attribute)
  8. next if !attribute.changed?
  9. attribute.save!
  10. end
  11. end
  12. private
  13. def attributes
  14. ObjectManager::Attribute.all
  15. end
  16. def fix_nil_data_option(attribute)
  17. return if attribute[:data_option].is_a?(Hash) || attribute[:data_option][:options].is_a?(Array)
  18. attribute[:data_option] = {}
  19. end
  20. def fix_options(attribute)
  21. return if attribute[:data_option][:options].is_a?(Hash)
  22. return if attribute[:data_option][:options].is_a?(Array)
  23. attribute[:data_option][:options] = {}
  24. end
  25. def fix_relation(attribute)
  26. return if attribute[:data_option][:relation].is_a?(String)
  27. attribute[:data_option][:relation] = ''
  28. end
  29. end