From 119bad2239ae82841810b9a84f1c85c686912b8e Mon Sep 17 00:00:00 2001 From: Luke Baker Date: Wed, 14 Sep 2011 11:57:25 -0400 Subject: [PATCH] optimize creation of seed ideas --- app/models/choice.rb | 15 ++++++++++----- app/models/question.rb | 4 +++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/app/models/choice.rb b/app/models/choice.rb index b738114..b539359 100644 --- a/app/models/choice.rb +++ b/app/models/choice.rb @@ -26,17 +26,22 @@ class Choice < ActiveRecord::Base attr_protected :prompts_count, :wins, :losses, :score, :prompts_on_the_right_count, :prompts_on_the_left_count attr_readonly :question_id + attr_accessor :part_of_batch_create def update_questions_counter - self.question.update_attribute(:inactive_choices_count, self.question.choices.inactive.length) + unless part_of_batch_create + self.question.update_attribute(:inactive_choices_count, self.question.choices.inactive.length) + end end # if changing a choice to active, we want to regenerate prompts def update_prompt_queue - if self.changed.include?('active') && self.active? - self.question.mark_prompt_queue_for_refill - if self.question.choices.size - self.question.inactive_choices_count > 1 && self.question.uses_catchup? - self.question.send_later :add_prompt_to_queue + unless part_of_batch_create + if self.changed.include?('active') && self.active? + self.question.mark_prompt_queue_for_refill + if self.question.choices.size - self.question.inactive_choices_count > 1 && self.question.uses_catchup? + self.question.send_later :add_prompt_to_queue + end end end end diff --git a/app/models/question.rb b/app/models/question.rb index 0f65651..ea82911 100644 --- a/app/models/question.rb +++ b/app/models/question.rb @@ -45,7 +45,9 @@ class Question < ActiveRecord::Base def create_choices_from_ideas if ideas && ideas.any? ideas.each do |idea| - choices.create!(:creator => self.creator, :active => true, :data => idea.squish.strip) + # all but last is considered part of batch create, so the + # last one will fire things that only need to be run at the end + choices.create!(:creator => self.creator, :active => true, :data => idea.squish.strip, :part_of_batch_create => idea != ideas.last, :question => self) end end end -- libgit2 0.21.2