|
class AdoptXpathInWebsiteAgent < ActiveRecord::Migration
class Agent < ActiveRecord::Base
include JSONSerializedField
json_serialize :options
end
def up
Agent.where(type: 'Agents::WebsiteAgent').each do |agent|
extract = agent.options['extract']
next unless extract.is_a?(Hash) && extract.all? { |name, detail|
detail.key?('xpath') || detail.key?('css')
}
agent.options_will_change!
agent.options['extract'].each { |name, extraction|
case
when extraction.delete('text')
extraction['value'] = './/text()'
when attr = extraction.delete('attr')
extraction['value'] = "@#{attr}"
end
}
agent.save!
end
end
def down
raise ActiveRecord::IrreversibleMigration, "Cannot revert this migration"
end
end
|