From 7c9a0bc2bb821bcd584c644501542ba30aebcd35 Mon Sep 17 00:00:00 2001 From: zmagod Date: Fri, 22 Jul 2016 15:36:48 +0200 Subject: [PATCH] fixed models --- app/models/experiment.rb | 5 ----- app/models/my_module.rb | 4 ++++ app/models/my_module_group.rb | 3 ++- app/models/organization.rb | 2 +- app/models/project.rb | 8 +++++++- app/models/step.rb | 2 +- app/models/user_project.rb | 2 +- 7 files changed, 16 insertions(+), 10 deletions(-) diff --git a/app/models/experiment.rb b/app/models/experiment.rb index 70d5f91ff..5b9b06e20 100644 --- a/app/models/experiment.rb +++ b/app/models/experiment.rb @@ -22,9 +22,4 @@ class Experiment < ActiveRecord::Base experiment.validates :archived_by, presence: true experiment.validates :archived_on, presence: true end - - def modules_without_group - MyModule.where(experiment_id: id).where(my_module_group: nil) - .where(archived: false) - end end diff --git a/app/models/my_module.rb b/app/models/my_module.rb index 0cac4e052..9d4a01048 100644 --- a/app/models/my_module.rb +++ b/app/models/my_module.rb @@ -311,6 +311,10 @@ class MyModule < ActiveRecord::Base project.log(final) end + # Check if the model has a group + def self.without_group(exp) + where(my_module_group: nil, archived: false, experiment_id: exp.id) + end private def create_blank_protocol diff --git a/app/models/my_module_group.rb b/app/models/my_module_group.rb index 4e62db544..311aa813f 100644 --- a/app/models/my_module_group.rb +++ b/app/models/my_module_group.rb @@ -29,7 +29,8 @@ class MyModuleGroup < ActiveRecord::Base new_query = MyModuleGroup .distinct - .where("my_module_groups.project_id IN (?)", project_ids) + .joins(:experiment) + .where("experiment.project_id IN (?)", project_ids) .where_attributes_like(:name, a_query) # Show all results if needed diff --git a/app/models/organization.rb b/app/models/organization.rb index 6637710d4..b09720a12 100644 --- a/app/models/organization.rb +++ b/app/models/organization.rb @@ -257,7 +257,7 @@ class Organization < ActiveRecord::Base projects.includes( my_modules: { protocols: { steps: :assets }, results: { result_asset: :asset } } ).find_each do |project| - project.my_modules.find_each do |my_module| + project.project_my_modules.find_each do |my_module| my_module.protocol.steps.find_each do |step| step.assets.find_each { |asset| st += asset.estimated_size } end diff --git a/app/models/project.rb b/app/models/project.rb index 1793e739e..e039ba6ba 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -117,6 +117,12 @@ class Project < ActiveRecord::Base .where("users.id NOT IN (?)", UserProject.where(project: self).select(:id).distinct) end + def modules_without_group + self.experiments.map do |exp| + MyModule.where(experiment_id: exp.id).where(my_module_group: nil).where(archived: false) + end + end + def assigned_modules(user) role = self.user_role(user) if role.blank? @@ -140,7 +146,7 @@ class Project < ActiveRecord::Base end def active_module_groups - self.experiments.each do |exp| + experiments.map do |exp| exp.my_module_groups.joins(:my_modules) .where('my_modules.archived = ?', false) .distinct diff --git a/app/models/step.rb b/app/models/step.rb index eca511b0f..51b83b498 100644 --- a/app/models/step.rb +++ b/app/models/step.rb @@ -124,7 +124,7 @@ class Step < ActiveRecord::Base if (protocol.my_module.present?) then Activity.create( type_of: :destroy_step, - project: protocol.my_module.project, + project: protocol.my_module.experiment.project, my_module: protocol.my_module, user: @current_user, message: I18n.t( diff --git a/app/models/user_project.rb b/app/models/user_project.rb index e839a92c9..b462e48f2 100644 --- a/app/models/user_project.rb +++ b/app/models/user_project.rb @@ -17,7 +17,7 @@ class UserProject < ActiveRecord::Base def destroy_associations # Destroy the user from all project's modules - project.my_modules.each do |my_module| + project.project_my_modules.each do |my_module| um2 = (my_module.user_my_modules.select { |um| um.user == self.user }).first if um2.present? um2.destroy