Files
osem/lib/tasks/data.rake
Stella Rouzi 7f97079e9b name of task
2016-05-23 15:00:02 +03:00

30 lines
1.0 KiB
Ruby

namespace :data do
desc 'Nullify wrong foreign keys'
task nullify_nonexistent_foreign_keys: :environment do
# Track
events_track = Event.all.select { |e| e.track_id && Track.find_by(id: e.track_id).nil? }
nullify_attribute(events_track, 'track_id')
# Difficulty level
events_difficulty_level = Event.all.select { |e| e.difficulty_level_id && DifficultyLevel.find_by(id: e.difficulty_level_id).nil? }
nullify_attribute(events_difficulty_level, 'difficulty_level_id')
# Room
events_room = Event.all.select { |e| e.room_id && Room.find_by(id: e.room_id).nil? }
nullify_attribute(events_room, 'room_id')
end
def nullify_attribute(collection, attribute)
puts "Will nullify #{attribute} in #{ActionController::Base.helpers.pluralize(collection.length, 'event')}."
if collection.any?
puts "IDs: #{collection.map(&:id)}"
collection.each do |item|
item.send(attribute+'=', nil)
item.save!
end
puts "Fixed #{attribute}!"
end
end
end