diff --git a/app/controllers/body_trackers_controller.rb b/app/controllers/body_trackers_controller.rb index 2a14983..6e4c8d8 100644 --- a/app/controllers/body_trackers_controller.rb +++ b/app/controllers/body_trackers_controller.rb @@ -11,6 +11,20 @@ class BodyTrackersController < ApplicationController defaults.delete_if { |n, s| available.include?(s) } @project.units.create(defaults.map { |n, s| {name: n, shortname: s} }) + available = Quantity.where(project: @project).map { |q| [[q.name, q.domain], q] }.to_h + defaults = Quantity.where(project: nil) + Quantity.each_with_level(defaults) do |q, level| + unless available.has_key?([q.name, q.domain]) + obj = @project.quantities.create({ + name: q.name, + domain: q.domain, + description: q.description, + parent: q.parent ? available[[q.parent.name, q.parent.domain]] : nil + }) + available[[q.name, q.domain]] = obj + end + end + redirect_to :back end end diff --git a/db/migrate/001_create_units.rb b/db/migrate/001_create_units.rb index fa88f86..04f9174 100644 --- a/db/migrate/001_create_units.rb +++ b/db/migrate/001_create_units.rb @@ -53,9 +53,9 @@ class CreateUnits < ActiveRecord::Migration f6 = Quantity.create project: nil, domain: :diet, parent: f3, name: "Trans", description: "Fatty acids with at least one non-conjugated C-C double bond in the" \ " trans configuration" - f7 = Quantity.create project: nil, domain: :diet, parent: f5, name: "omega-3 (n-3)", + f7 = Quantity.create project: nil, domain: :diet, parent: f5, name: "Omega-3 (n-3)", description: "" - f8 = Quantity.create project: nil, domain: :diet, parent: f5, name: "omega-6 (n-6)", + f8 = Quantity.create project: nil, domain: :diet, parent: f5, name: "Omega-6 (n-6)", description: "" f9 = Quantity.create project: nil, domain: :diet, parent: f7, name: "ALA 18:3(n-3)", description: "alpha-Linolenic acid" diff --git a/lib/body_tracking/project_patch.rb b/lib/body_tracking/project_patch.rb index 28a05b8..9b04dcf 100644 --- a/lib/body_tracking/project_patch.rb +++ b/lib/body_tracking/project_patch.rb @@ -2,7 +2,7 @@ module BodyTracking module ProjectPatch Project.class_eval do has_many :units, dependent: :destroy - has_many :quantities, dependent: :destroy + has_many :quantities, -> { order "lft" }, dependent: :destroy end end end