diff --git a/app/controllers/phases_controller.rb b/app/controllers/phases_controller.rb index de50db4..892df0d 100644 --- a/app/controllers/phases_controller.rb +++ b/app/controllers/phases_controller.rb @@ -38,7 +38,7 @@ # # get the ids of the dynamically selected guidance groups # and keep a map of them so we can extract the names later - guidance_groups_ids = @plan.plan_guidance_groups.map{|pgg| pgg.guidance_group.id} + guidance_groups_ids = @plan.guidance_groups.map{|pgg| pgg.id} guidance_groups = GuidanceGroup.includes({guidances: :themes}).find(guidance_groups_ids) # create a map from theme to array of guidances diff --git a/app/controllers/plans_controller.rb b/app/controllers/plans_controller.rb index e0f6648..75c45cc 100644 --- a/app/controllers/plans_controller.rb +++ b/app/controllers/plans_controller.rb @@ -129,7 +129,7 @@ authorize @plan @editing = (!params[:editing].nil? && @plan.administerable_by?(current_user.id)) @all_guidance_groups = @plan.get_guidance_group_options - @selected_guidance_groups = @plan.plan_guidance_groups.pluck(:guidance_group_id) + @selected_guidance_groups = @plan.guidance_groups.pluck(:id) @based_on = @plan.base_template respond_to :html @@ -423,7 +423,7 @@ ghash = {} plan["guidance_groups"].map{|g| ghash[g["id"]] = g} - plan["plan_guidance_groups"].each do |pgg| + plan["plans_guidance_groups"].each do |pgg| pgg["guidance_group"] = ghash[ pgg["guidance_group_id"] ] end diff --git a/app/models/guidance_group.rb b/app/models/guidance_group.rb index 9686c27..19e946c 100644 --- a/app/models/guidance_group.rb +++ b/app/models/guidance_group.rb @@ -4,6 +4,7 @@ # Associations belongs_to :org has_many :guidances + has_and_belongs_to_many :plans, join_table: :plans_guidance_groups # depricated but needed for migration "single_group_for_guidance" # has_and_belongs_to_many :guidances, join_table: "guidance_in_group" diff --git a/app/models/plan.rb b/app/models/plan.rb index 6718a3b..6278380 100644 --- a/app/models/plan.rb +++ b/app/models/plan.rb @@ -10,8 +10,7 @@ has_many :notes, through: :answers has_many :roles, dependent: :destroy has_many :users, through: :roles - has_many :plan_guidance_groups, dependent: :destroy - has_many :guidance_groups, through: :plan_guidance_groups + has_and_belongs_to_many :guidance_groups, join_table: :plans_guidance_groups accepts_nested_attributes_for :template has_many :exported_plans @@ -208,8 +207,7 @@ end # Get guidance by theme from any guidance groups currently selected - self.plan_guidance_groups.each do |pgg| - group = pgg.guidance_group + self.guidance_groups.each do |group| group.guidances.each do |guidance| common_themes = guidance.themes.all & question.themes.all if common_themes.length > 0 @@ -958,7 +956,7 @@ {phases: {sections: {questions: :answers}}}, {customizations: :org} ]}, - {plan_guidance_groups: {guidance_group: :guidances}} + {plans_guidance_groups: {guidance_group: :guidances}} ]).find(id) end @@ -969,7 +967,7 @@ {customizations: :org}, :org ]}, - {plan_guidance_groups: {guidance_group: {guidances: :themes}}}, + {plans_guidance_groups: {guidance_group: {guidances: :themes}}}, {questions: :themes} ]).find(id) end diff --git a/db/schema.rb b/db/schema.rb index cbe7b61..f32e764 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -193,6 +193,11 @@ t.integer "visibility", default: 0, null: false end + create_table "plans_guidance_groups", force: :cascade do |t| + t.integer "guidance_group_id" + t.integer "plan_id" + end + create_table "question_formats", force: :cascade do |t| t.string "title" t.text "description" @@ -390,6 +395,8 @@ add_foreign_key "plan_guidance_groups", "guidance_groups" add_foreign_key "plan_guidance_groups", "plans" add_foreign_key "plans", "templates" + add_foreign_key "plans_guidance_groups", "guidance_groups" + add_foreign_key "plans_guidance_groups", "plans" add_foreign_key "question_options", "questions" add_foreign_key "questions", "question_formats" add_foreign_key "questions", "sections"