namespace :qwester do
# Usage: rake data:reset_questionnaire_positions RAILS_ENV=production desc "Goes through each of the acts_as_list objects and resets the positions based on order they were added to the database" task :reset_questionnaire_positions => :environment do Qwester::Questionnaire.all.each do |questionnaire| first_id = questionnaire.questionnaires_questions.minimum(:id) if first_id # nil if questionnaire has no questions sql = "UPDATE qwester_questionnaires_questions SET position = (1 + id - #{first_id}) WHERE questionnaire_id = #{questionnaire.id};" ActiveRecord::Base.connection.execute sql end end puts "Positions reset" end desc "Removes unpreserved answer stores" task :destroy_unpreserved_answer_stores => :environment do before = Qwester::AnswerStore.count Qwester::AnswerStore.destroy_unpreserved after = Qwester::AnswerStore.count puts "#{before - after} answer stores removed, with #{after} remaining." end desc "Reset positions of questionnaires within presentations" task :reset_presentation_questionnaires_positions => :environment do Qwester::Presentation.all.each do |presentation| presentation.presentation_questionnaires.each_with_index do |presentation_questionnaire, index| presentation_questionnaire.update_attribute(:position, index + 1) end puts "Presentation '#{presentation.name}' questionnaires postitioned #{presentation.presentation_questionnaires.collect(&:position)}" end end
end