diff --git a/app/models/experiment.rb b/app/models/experiment.rb index 1aefe5f3f..eb27ccebb 100644 --- a/app/models/experiment.rb +++ b/app/models/experiment.rb @@ -9,6 +9,7 @@ class Experiment < ActiveRecord::Base has_many :my_modules, inverse_of: :experiment, dependent: :destroy has_many :my_module_groups, inverse_of: :experiment, dependent: :destroy + has_many :report_elements, inverse_of: :experiment, dependent: :destroy validates :name, presence: true, diff --git a/app/models/report_element.rb b/app/models/report_element.rb index 7a0389f54..3e8f5dfe0 100644 --- a/app/models/report_element.rb +++ b/app/models/report_element.rb @@ -14,7 +14,8 @@ class ReportElement < ActiveRecord::Base step_comments: 11, result_comments: 12, project_activity: 13, # TODO - project_samples: 14 # TODO + project_samples: 14, # TODO + experiment: 15 } # This is only used by certain elements @@ -36,6 +37,7 @@ class ReportElement < ActiveRecord::Base # References to various report entities belongs_to :project, inverse_of: :report_elements + belongs_to :experiment, inverse_of: :report_elements belongs_to :my_module, inverse_of: :report_elements belongs_to :step, inverse_of: :report_elements belongs_to :result, inverse_of: :report_elements @@ -59,6 +61,8 @@ class ReportElement < ActiveRecord::Base def element_reference if project_header? or project_activity? or project_samples? return project + elsif experiment? + return experiment elsif my_module? or my_module_activity? or my_module_samples? return my_module elsif step? or step_comments? @@ -79,6 +83,8 @@ class ReportElement < ActiveRecord::Base def set_element_reference(ref_id) if project_header? or project_activity? or project_samples? self.project_id = ref_id + elsif experiment? + self.experiment_id = ref_id elsif my_module? or my_module_activity? or my_module_samples? self.my_module_id = ref_id elsif step? or step_comments? @@ -98,6 +104,7 @@ class ReportElement < ActiveRecord::Base def clean_removed_or_archived_elements parent_model = '' [ 'project', + 'experiment', 'my_module', 'step', 'result', @@ -119,6 +126,7 @@ class ReportElement < ActiveRecord::Base def has_one_of_referenced_elements num_of_refs = [ project, + experiment, my_module, step, result, diff --git a/db/migrate/20160803082801_add_experiment_to_report_elements.rb b/db/migrate/20160803082801_add_experiment_to_report_elements.rb new file mode 100644 index 000000000..a816e4b92 --- /dev/null +++ b/db/migrate/20160803082801_add_experiment_to_report_elements.rb @@ -0,0 +1,8 @@ +class AddExperimentToReportElements < ActiveRecord::Migration + def change + add_column :report_elements, :experiment_id, :integer + + add_foreign_key :report_elements, :experiments + add_index :report_elements, :experiment_id + end +end diff --git a/db/schema.rb b/db/schema.rb index fa23e0e64..dae069f44 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160722082700) do +ActiveRecord::Schema.define(version: 20160803082801) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -138,26 +138,26 @@ ActiveRecord::Schema.define(version: 20160722082700) do add_index "delayed_jobs", ["queue"], name: "delayed_jobs_queue", using: :btree create_table "experiments", force: :cascade do |t| - t.string "name", null: false + t.string "name", null: false t.text "description" - t.integer "project_id", null: false - t.integer "created_by_id", null: false - t.integer "last_modified_by_id", null: false - t.boolean "archived", default: false, null: false + t.integer "project_id", null: false + t.integer "created_by_id", null: false + t.integer "last_modified_by_id", null: false + t.boolean "archived", default: false, null: false t.integer "archived_by_id" t.datetime "archived_on" t.integer "restored_by_id" t.datetime "restored_on" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false end add_index "experiments", ["archived_by_id"], name: "index_experiments_on_archived_by_id", using: :btree add_index "experiments", ["created_by_id"], name: "index_experiments_on_created_by_id", using: :btree + add_index "experiments", ["last_modified_by_id"], name: "index_experiments_on_last_modified_by_id", using: :btree add_index "experiments", ["name"], name: "index_experiments_on_name", using: :btree add_index "experiments", ["project_id"], name: "index_experiments_on_project_id", using: :btree add_index "experiments", ["restored_by_id"], name: "index_experiments_on_restored_by_id", using: :btree - add_index "experiments", ["last_modified_by_id"], name: "index_experiments_on_last_modified_by_id", using: :btree create_table "logs", force: :cascade do |t| t.integer "organization_id", null: false @@ -316,9 +316,9 @@ ActiveRecord::Schema.define(version: 20160722082700) do add_index "protocols", ["restored_by_id"], name: "index_protocols_on_restored_by_id", using: :btree create_table "report_elements", force: :cascade do |t| - t.integer "position", null: false - t.integer "type_of", null: false - t.integer "sort_order", default: 0 + t.integer "position", null: false + t.integer "type_of", null: false + t.integer "sort_order", default: 0 t.integer "report_id" t.integer "parent_id" t.integer "project_id" @@ -328,12 +328,14 @@ ActiveRecord::Schema.define(version: 20160722082700) do t.integer "checklist_id" t.integer "asset_id" t.integer "table_id" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.integer "experiment_id" end add_index "report_elements", ["asset_id"], name: "index_report_elements_on_asset_id", using: :btree add_index "report_elements", ["checklist_id"], name: "index_report_elements_on_checklist_id", using: :btree + add_index "report_elements", ["experiment_id"], name: "index_report_elements_on_experiment_id", using: :btree add_index "report_elements", ["my_module_id"], name: "index_report_elements_on_my_module_id", using: :btree add_index "report_elements", ["parent_id"], name: "index_report_elements_on_parent_id", using: :btree add_index "report_elements", ["project_id"], name: "index_report_elements_on_project_id", using: :btree @@ -661,8 +663,8 @@ ActiveRecord::Schema.define(version: 20160722082700) do add_foreign_key "custom_fields", "users", column: "last_modified_by_id" add_foreign_key "experiments", "users", column: "archived_by_id" add_foreign_key "experiments", "users", column: "created_by_id" - add_foreign_key "experiments", "users", column: "restored_by_id" add_foreign_key "experiments", "users", column: "last_modified_by_id" + add_foreign_key "experiments", "users", column: "restored_by_id" add_foreign_key "logs", "organizations" add_foreign_key "my_module_comments", "comments" add_foreign_key "my_module_comments", "my_modules" @@ -695,6 +697,7 @@ ActiveRecord::Schema.define(version: 20160722082700) do add_foreign_key "protocols", "users", column: "restored_by_id" add_foreign_key "report_elements", "assets" add_foreign_key "report_elements", "checklists" + add_foreign_key "report_elements", "experiments" add_foreign_key "report_elements", "my_modules" add_foreign_key "report_elements", "projects" add_foreign_key "report_elements", "reports"