creating rake task for school_question creation

pull/1/head
Jared Cosulich 7 years ago
parent 819ff49c63
commit d6ae78bcad

@ -16,6 +16,8 @@
# sudo heroku run rake data:move_likert_to_submeasures -a mciea-beta # sudo heroku run rake data:move_likert_to_submeasures -a mciea-beta
# sudo heroku run:detached rake data:sync -a mciea-beta --size performance-l # sudo heroku run:detached rake data:sync -a mciea-beta --size performance-l
# sudo heroku run:detached rake data:create_school_questions -a mciea-beta --size performance-l
# Add: # Add:
# #
# Category: unique_external_id (string) # Category: unique_external_id (string)
@ -447,6 +449,44 @@ namespace :data do
Recipient.created_in(@year).each { |r| r.update_counts } Recipient.created_in(@year).each { |r| r.update_counts }
end end
desc 'Create SchoolQuestions'
task create_school_questions: :environment do
Category.joins(:questions).uniq.all.each do |category|
category.school_categories.includes(school: [:district]).find_in_batches(batch_size: 100) do |group|
group.each do |school_category|
school_questions = []
category.questions.created_in(school_category.year).each do |question|
school = school_category.school
next if school.district.name != "Boston"
attempt_count = Attempt.
created_in(school_category.year).
for_question(question).
for_school(school).count
available_responders = school.available_responders_for(question)
school_questions << school_category.school_questions.new(
school: school,
question: question,
school_category: school_category,
year: school_category.year,
attempt_count: available_responders,
response_count: attempt_count,
response_rate: attempt_count.to_f / available_responders.to_f
)
end
SchoolQuestion.import school_questions
valid_questions = school_questions.select { |sc| sc.response_rate > 0.3 }
school_category.update(
valid_child_count: valid_questions.length
)
end
end
end
end
def sync_school_category_aggregates def sync_school_category_aggregates
School.all.each do |school| School.all.each do |school|
Category.all.each do |category| Category.all.each do |category|
@ -503,40 +543,7 @@ end
# missing_schools.each { |s| puts(s) } # missing_schools.each { |s| puts(s) }
# #
# #
# Category.joins(:questions).uniq.all.each do |category|
# category.school_categories.includes(school: [:district]).find_in_batches(batch_size: 100) do |group|
# group.each do |school_category|
# school_questions = []
#
# category.questions.created_in(school_category.year).each do |question|
# school = school_category.school
# next if school.district.name != "Boston"
# attempt_count = Attempt.
# created_in(school_category.year).
# for_question(question).
# for_school(school).count
#
# available_responders = school.available_responders_for(question)
# school_questions << school_category.school_questions.new(
# school: school,
# question: question,
# school_category: school_category,
# year: school_category.year,
# attempt_count: available_responders,
# response_count: attempt_count,
# response_rate: attempt_count.to_f / available_responders.to_f
# )
# end
#
# SchoolQuestion.import school_questions
# valid_questions = school_questions.select { |sc| sc.response_rate > 0.3 }
# school_category.update(
# valid_child_count: valid_questions.length
# )
# end
#
# end
# end
# #
# loop do # loop do
# categories = Category.joins(:school_categories) # categories = Category.joins(:school_categories)

Loading…
Cancel
Save