drop dietary choices, social events, and html_export_path
This commit is contained in:
parent
1fdd029a86
commit
b9e10922ee
13 changed files with 315 additions and 39 deletions
134
db/migrate/20160309182642_remove_social_events_table.rb
Normal file
134
db/migrate/20160309182642_remove_social_events_table.rb
Normal file
|
|
@ -0,0 +1,134 @@
|
|||
class RemoveSocialEventsTable < ActiveRecord::Migration
|
||||
class TempConference < ActiveRecord::Base
|
||||
self.table_name = 'conferences'
|
||||
|
||||
has_many :temp_social_events
|
||||
end
|
||||
|
||||
class TempSocialEvent < ActiveRecord::Base
|
||||
self.table_name = 'social_events'
|
||||
|
||||
belongs_to :temp_conference
|
||||
has_and_belongs_to_many :temp_registrations
|
||||
end
|
||||
|
||||
class TempRegistration < ActiveRecord::Base
|
||||
self.table_name = 'registrations'
|
||||
|
||||
belongs_to :temp_conference
|
||||
has_and_belongs_to_many :temp_social_events
|
||||
has_and_belongs_to_many :temp_qanswers
|
||||
end
|
||||
|
||||
class TempRegistrationsSocialEvent < ActiveRecord::Base
|
||||
self.table_name = 'registrations_social_events'
|
||||
|
||||
belongs_to :temp_registrations
|
||||
belongs_to :temp_social_events
|
||||
end
|
||||
|
||||
class TempQuestionType < ActiveRecord::Base
|
||||
self.table_name = 'question_types'
|
||||
|
||||
has_many :temp_questions
|
||||
end
|
||||
|
||||
class TempQuestion < ActiveRecord::Base
|
||||
self.table_name = 'questions'
|
||||
|
||||
has_many :temp_qanswers
|
||||
has_many :temp_answers, through: :temp_qanswers
|
||||
belongs_to :temp_question_type
|
||||
has_and_belongs_to_many :temp_conferences
|
||||
end
|
||||
|
||||
class TempAnswer < ActiveRecord::Base
|
||||
self.table_name = 'answers'
|
||||
|
||||
has_many :temp_qanswers
|
||||
has_many :temp_questions, through: :temp_qanswers
|
||||
end
|
||||
|
||||
class TempQanswer < ActiveRecord::Base
|
||||
self.table_name = 'qanswers'
|
||||
|
||||
belongs_to :temp_question
|
||||
belongs_to :temp_answer
|
||||
has_and_belongs_to_many :temp_registrations
|
||||
end
|
||||
|
||||
class TempConferencesQuestions < ActiveRecord::Base
|
||||
self.table_name = 'conferences_questions'
|
||||
end
|
||||
|
||||
class TempQanswerRegistration < ActiveRecord::Base
|
||||
self.table_name = 'qanswers_registrations'
|
||||
end
|
||||
|
||||
def up
|
||||
# Create Question of 'Multiple Choice' type
|
||||
qtype = TempQuestionType.find_or_create_by!(title: 'Multiple Choice')
|
||||
|
||||
TempConference.all.each do |conference|
|
||||
if TempSocialEvent.where(conference_id: conference.id).any?
|
||||
# Find existing question or initialize it
|
||||
question = TempQuestion.find_or_initialize_by(title: 'Which of the following social events are you going to attend?',
|
||||
conference_id: conference.id,
|
||||
question_type_id: qtype.id)
|
||||
question.save!
|
||||
# Enable the question for the conference
|
||||
TempConferencesQuestions.find_or_create_by!(conference_id: conference.id,
|
||||
question_id: question.id)
|
||||
end
|
||||
|
||||
TempSocialEvent.where(conference_id: conference.id).each do |social_event|
|
||||
answer = TempAnswer.find_or_create_by!(title: social_event.title)
|
||||
# Associate answer with the question
|
||||
qa = TempQanswer.find_or_initialize_by(question_id: question.id,
|
||||
answer_id: answer.id)
|
||||
qa.save!
|
||||
|
||||
# Associate appropriate answer with registration
|
||||
TempRegistrationsSocialEvent.where(social_event_id: social_event.id).each do |registration_social_event|
|
||||
registration = TempRegistration.find(registration_social_event.registration_id)
|
||||
TempQanswerRegistration.find_or_create_by!(registration_id: registration.id,
|
||||
qanswer_id: qa.id)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
drop_table :social_events
|
||||
drop_table :registrations_social_events
|
||||
end
|
||||
|
||||
def down
|
||||
create_table :social_events do |t|
|
||||
t.references :conference
|
||||
t.string :title
|
||||
t.text :description
|
||||
t.date :date
|
||||
end
|
||||
|
||||
create_table :registrations_social_events, id: false do |t|
|
||||
t.references :registration, :social_event
|
||||
end
|
||||
|
||||
qtype = TempQuestionType.find_by(title: 'Multiple Choice')
|
||||
|
||||
TempConference.all.each do |conference|
|
||||
if qtype && (question = TempQuestion.find_by(title: 'Which of the following social events are you going to attend?',
|
||||
conference_id: conference.id, question_type_id: qtype.id))
|
||||
TempQanswer.where(question_id: question.id).each do |qa|
|
||||
TempQanswerRegistration.where(qanswer_id: qa.id).each do |qa_registration|
|
||||
answer = TempAnswer.find(qa.answer_id)
|
||||
registration = TempRegistration.find(qa_registration.registration_id)
|
||||
social_event = TempSocialEvent.find_or_create_by!(title: answer.title,
|
||||
conference_id: conference.id)
|
||||
TempRegistrationsSocialEvent.find_or_create_by!(registration_id: registration.id,
|
||||
social_event_id: social_event.id)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
173
db/migrate/20160309182655_remove_dietary_choices_table.rb
Normal file
173
db/migrate/20160309182655_remove_dietary_choices_table.rb
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
class RemoveDietaryChoicesTable < ActiveRecord::Migration
|
||||
class TempDietaryChoice < ActiveRecord::Base
|
||||
self.table_name = 'dietary_choices'
|
||||
|
||||
belongs_to :temp_conference
|
||||
end
|
||||
|
||||
class TempConference < ActiveRecord::Base
|
||||
self.table_name = 'conferences'
|
||||
|
||||
has_many :temp_dietary_choices, dependent: :destroy
|
||||
end
|
||||
|
||||
class TempRegistration < ActiveRecord::Base
|
||||
self.table_name = 'registrations'
|
||||
|
||||
belongs_to :temp_conference
|
||||
end
|
||||
|
||||
class TempQuestionType < ActiveRecord::Base
|
||||
self.table_name = 'question_types'
|
||||
|
||||
has_many :temp_questions
|
||||
end
|
||||
|
||||
class TempQuestion < ActiveRecord::Base
|
||||
self.table_name = 'questions'
|
||||
|
||||
has_many :temp_qanswers
|
||||
has_many :temp_answers, through: :temp_qanswers
|
||||
belongs_to :temp_question_type
|
||||
has_and_belongs_to_many :temp_conferences
|
||||
end
|
||||
|
||||
class TempAnswer < ActiveRecord::Base
|
||||
self.table_name = 'answers'
|
||||
|
||||
has_many :temp_qanswers
|
||||
has_many :temp_questions, through: :temp_qanswers
|
||||
end
|
||||
|
||||
class TempQanswer < ActiveRecord::Base
|
||||
self.table_name = 'qanswers'
|
||||
|
||||
belongs_to :temp_question
|
||||
belongs_to :temp_answer
|
||||
has_and_belongs_to_many :temp_registrations
|
||||
end
|
||||
|
||||
class TempConferencesQuestions < ActiveRecord::Base
|
||||
self.table_name = 'conferences_questions'
|
||||
end
|
||||
|
||||
class TempQanswerRegistration < ActiveRecord::Base
|
||||
self.table_name = 'qanswers_registrations'
|
||||
end
|
||||
|
||||
def up
|
||||
# Create Question of 'Multiple Choice' type
|
||||
if TempDietaryChoice.all.any?
|
||||
qtype = TempQuestionType.find_or_create_by!(title: 'Single Choice')
|
||||
end
|
||||
|
||||
# Migrate dietary_choice_id to a question
|
||||
TempConference.all.each do |conference|
|
||||
if TempDietaryChoice.where(conference_id: conference.id).any?
|
||||
# Find existing question or initialize it
|
||||
question = TempQuestion.find_or_initialize_by(title: 'Which is your dietary choice?',
|
||||
conference_id: conference.id,
|
||||
question_type_id: qtype.id)
|
||||
question.save!
|
||||
# Enable the question for the conference
|
||||
TempConferencesQuestions.find_or_create_by!(conference_id: conference.id,
|
||||
question_id: question.id)
|
||||
|
||||
TempDietaryChoice.where(conference_id: conference.id).each do |dietary_choice|
|
||||
answer = TempAnswer.find_or_create_by!(title: dietary_choice.title)
|
||||
# Associate answer with the question
|
||||
qa = TempQanswer.find_or_initialize_by(question_id: question.id,
|
||||
answer_id: answer.id)
|
||||
qa.save!
|
||||
|
||||
# Associate appropriate answer with registration
|
||||
TempRegistration.where(dietary_choice_id: dietary_choice.id).each do |registration|
|
||||
TempQanswerRegistration.find_or_create_by!(registration_id: registration.id,
|
||||
qanswer_id: qa.id)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Migrate other_dietary_choice to a question and put data in other_special_needs
|
||||
TempRegistration.all.each do |registration|
|
||||
if registration.other_dietary_choice.present?
|
||||
conference = TempConference.find(registration.conference_id)
|
||||
qtype = TempQuestionType.find_or_create_by!(title: 'Yes/No')
|
||||
question = TempQuestion.find_or_initialize_by(title: 'Do you have another dietary choice?',
|
||||
conference_id: conference.id,
|
||||
question_type_id: qtype.id)
|
||||
question.save!
|
||||
# Enable the question for the conference
|
||||
TempConferencesQuestions.find_or_create_by!(conference_id: conference.id,
|
||||
question_id: question.id)
|
||||
|
||||
# Create 'Yes' answer
|
||||
answer_yes = TempAnswer.find_or_create_by!(title: 'Yes')
|
||||
|
||||
# Associate answer with the question
|
||||
qa = TempQanswer.find_or_initialize_by(question_id: question.id,
|
||||
answer_id: answer_yes.id)
|
||||
|
||||
qa.save!
|
||||
|
||||
# Associate appropriate answer with registration
|
||||
TempQanswerRegistration.find_or_create_by!(registration_id: registration.id,
|
||||
qanswer_id: qa.id)
|
||||
|
||||
# Move data from other_dietary_choice to other_special_needs
|
||||
registration.other_special_needs << "Other dietary choice: #{registration.other_dietary_choice}."
|
||||
registration.save!
|
||||
end
|
||||
end
|
||||
|
||||
remove_column :conferences, :use_dietary_choices
|
||||
remove_column :registrations, :dietary_choice_id
|
||||
remove_column :registrations, :other_dietary_choice
|
||||
drop_table :dietary_choices
|
||||
end
|
||||
|
||||
def down
|
||||
create_table :dietary_choices do |t|
|
||||
t.references :conference
|
||||
t.string :title, null: false
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
add_column :conferences, :use_dietary_choices, :boolean
|
||||
add_column :registrations, :dietary_choice_id, :integer
|
||||
add_column :registrations, :other_dietary_choice, :text
|
||||
|
||||
qtype = TempQuestionType.find_by(title: 'Single Choice')
|
||||
TempConference.all.each do |conference|
|
||||
if qtype && (question = TempQuestion.find_by(title: 'Which is your dietary choice?',
|
||||
conference_id: conference.id, question_type_id: qtype.id))
|
||||
TempQanswer.where(question_id: question.id).each do |qa|
|
||||
TempQanswerRegistration.where(qanswer_id: qa.id).each do |qa_registration|
|
||||
answer = TempAnswer.find(qa.answer_id)
|
||||
registration = TempRegistration.find(qa_registration.registration_id)
|
||||
dietary_choice = TempDietaryChoice.find_or_create_by!(title: answer.title,
|
||||
conference_id: conference.id)
|
||||
registration.dietary_choice_id = dietary_choice.id
|
||||
registration.save!
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
qtype = TempQuestionType.find_by(title: 'Yes/No')
|
||||
answer_yes = TempAnswer.find_by(title: 'Yes')
|
||||
TempConference.all.each do |conference|
|
||||
if qtype && (question = TempQuestion.find_by(title: 'Do you have another dietary choice?',
|
||||
conference_id: conference.id, question_type_id: qtype.id))
|
||||
TempQanswer.where(question_id: question.id, answer_id: answer_yes.id).each do |qa|
|
||||
TempQanswerRegistration.where(qanswer_id: qa.id).each do |qa_registration|
|
||||
registration = TempRegistration.find(qa_registration.registration_id)
|
||||
registration.other_dietary_choice = 'Yes'
|
||||
registration.save!
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
class RemoveHtmlExportPathFromConferences < ActiveRecord::Migration
|
||||
def change
|
||||
remove_column :conferences, :html_export_path, :string
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue