From 2ba6b3ecb832b6cbdc75407ad17d40eab5ea19c3 Mon Sep 17 00:00:00 2001 From: divyajayan Date: Tue, 2 May 2017 20:34:43 +0530 Subject: [PATCH 01/10] support for namespace and fixed unscoped in model --- lib/approval2/controller_additions.rb | 20 ++++++++++---------- lib/approval2/model_additions.rb | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/approval2/controller_additions.rb b/lib/approval2/controller_additions.rb index 19aab35..c327801 100644 --- a/lib/approval2/controller_additions.rb +++ b/lib/approval2/controller_additions.rb @@ -10,21 +10,24 @@ module ControllerAdditions private + + def modelName + self.class.name.sub("Controller", "").underscore.split('/').last.singularize + end + + def modelKlass + moduleName = self.class.name.include?("::") ? self.class.name.split("::").first : "" + "#{moduleName}::#{modelName.classify}".constantize + end def before_index - if (params[:approval_status].present? and params[:approval_status] == 'U') - modelName = self.class.name.sub("Controller", "").underscore.split('/').last.singularize - modelKlass = modelName.classify.constantize - + if (params[:approval_status].present? and params[:approval_status] == 'U') x = modelKlass.unscoped.where("approval_status =?",'U').order("id desc") instance_variable_set("@#{modelName}s", x.paginate(:per_page => 10, :page => params[:page])) end end def before_edit - modelName = self.class.name.sub("Controller", "").underscore.split('/').last.singularize - modelKlass = modelName.classify.constantize - x = modelKlass.unscoped.find_by_id(params[:id]) if x.approval_status == 'A' && x.unapproved_record.nil? params = (x.attributes).merge({:approved_id => x.id,:approved_version => x.lock_version}) @@ -35,9 +38,6 @@ def before_edit end def before_approve - modelName = self.class.name.sub("Controller", "").underscore.split('/').last.singularize - modelKlass = modelName.classify.constantize - x = modelKlass.unscoped.find(params[:id]) modelKlass.transaction do approved_record = x.approve diff --git a/lib/approval2/model_additions.rb b/lib/approval2/model_additions.rb index 4169ab0..4d1a7f2 100644 --- a/lib/approval2/model_additions.rb +++ b/lib/approval2/model_additions.rb @@ -9,8 +9,8 @@ module ModelAdditions has_one :unapproved_record_entry, :as => :approvable, :class_name => '::UnapprovedRecord' # refers to the approved/unapproved record in the model - belongs_to :unapproved_record, :primary_key => 'approved_id', :foreign_key => 'id', :class_name => self.name, :unscoped => true - belongs_to :approved_record, :foreign_key => 'approved_id', :primary_key => 'id', :class_name => self.name, :unscoped => true + belongs_to :unapproved_record, -> { unscoped }, :primary_key => 'approved_id', :foreign_key => 'id', :class_name => self.name + belongs_to :approved_record, -> { unscoped }, :foreign_key => 'approved_id', :primary_key => 'id', :class_name => self.name validates_uniqueness_of :approved_id, :allow_blank => true validate :validate_unapproved_record From ead16de987d5b9cc1c8194825e659dd0944d64b5 Mon Sep 17 00:00:00 2001 From: divyajayan Date: Tue, 2 May 2017 20:35:36 +0530 Subject: [PATCH 02/10] bumped up version --- lib/approval2/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/approval2/version.rb b/lib/approval2/version.rb index 89ba8bb..0e25ed1 100644 --- a/lib/approval2/version.rb +++ b/lib/approval2/version.rb @@ -1,3 +1,3 @@ module Approval2 - VERSION = "0.1.7" + VERSION = "0.1.8" end From cf2ad6387d5a37a226d836619291463d4c111dd6 Mon Sep 17 00:00:00 2001 From: NileshPanchal Date: Fri, 3 Nov 2017 07:33:35 +0530 Subject: [PATCH 03/10] changes in migration for rails v5.1 --- .../approval2/install/templates/create_unapproved_records.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/generators/approval2/install/templates/create_unapproved_records.rb b/lib/generators/approval2/install/templates/create_unapproved_records.rb index 75ad06c..3e5b573 100644 --- a/lib/generators/approval2/install/templates/create_unapproved_records.rb +++ b/lib/generators/approval2/install/templates/create_unapproved_records.rb @@ -1,4 +1,4 @@ -class CreateUnapprovedRecords < ActiveRecord::Migration +class CreateUnapprovedRecords < ActiveRecord::Migration[5.0] def change create_table :unapproved_records, {:sequence_start_value => '1 cache 20 order increment by 1'} do |t| t.integer :approvable_id From 6d2d29c6659533417b6adff67c980cf065fa4959 Mon Sep 17 00:00:00 2001 From: NileshPanchal Date: Sat, 4 Nov 2017 11:22:56 +0530 Subject: [PATCH 04/10] changes for rails v5.1 - iteration 02 - rails v5.1 change in migration --- .../approval2/install/templates/create_unapproved_records.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/generators/approval2/install/templates/create_unapproved_records.rb b/lib/generators/approval2/install/templates/create_unapproved_records.rb index 3e5b573..237ddd7 100644 --- a/lib/generators/approval2/install/templates/create_unapproved_records.rb +++ b/lib/generators/approval2/install/templates/create_unapproved_records.rb @@ -1,4 +1,4 @@ -class CreateUnapprovedRecords < ActiveRecord::Migration[5.0] +class CreateUnapprovedRecords < ActiveRecord::Migration[5.1] def change create_table :unapproved_records, {:sequence_start_value => '1 cache 20 order increment by 1'} do |t| t.integer :approvable_id From bef51e1c23d56cc20be14d62f537f5eb1146d8a5 Mon Sep 17 00:00:00 2001 From: NileshPanchal Date: Sat, 4 Nov 2017 12:58:51 +0530 Subject: [PATCH 05/10] changes for rails v5.1 - iteration 03 --- lib/approval2/controller_additions.rb | 6 +++--- lib/approval2/version.rb | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/approval2/controller_additions.rb b/lib/approval2/controller_additions.rb index c327801..5854610 100644 --- a/lib/approval2/controller_additions.rb +++ b/lib/approval2/controller_additions.rb @@ -3,9 +3,9 @@ module ControllerAdditions extend ActiveSupport::Concern included do - before_filter :before_edit, only: :edit - before_filter :before_approve, only: :approve - before_filter :before_index, only: :index + before_action :before_edit, only: :edit + before_action :before_approve, only: :approve + before_action :before_index, only: :index end diff --git a/lib/approval2/version.rb b/lib/approval2/version.rb index 0e25ed1..28bcefc 100644 --- a/lib/approval2/version.rb +++ b/lib/approval2/version.rb @@ -1,3 +1,3 @@ module Approval2 - VERSION = "0.1.8" + VERSION = "0.1.9" end From f8c611c8fb53e34c1b02ee3f3b11da5b0934cfff Mon Sep 17 00:00:00 2001 From: NileshPanchal Date: Sat, 4 Nov 2017 19:57:25 +0530 Subject: [PATCH 06/10] changes for rails v5.1 - iteration 04 --- lib/approval2/model_additions.rb | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/approval2/model_additions.rb b/lib/approval2/model_additions.rb index 4d1a7f2..468224a 100644 --- a/lib/approval2/model_additions.rb +++ b/lib/approval2/model_additions.rb @@ -9,16 +9,13 @@ module ModelAdditions has_one :unapproved_record_entry, :as => :approvable, :class_name => '::UnapprovedRecord' # refers to the approved/unapproved record in the model - belongs_to :unapproved_record, -> { unscoped }, :primary_key => 'approved_id', :foreign_key => 'id', :class_name => self.name - belongs_to :approved_record, -> { unscoped }, :foreign_key => 'approved_id', :primary_key => 'id', :class_name => self.name + belongs_to :unapproved_record, -> { unscoped(where: :approval_status) }, :primary_key => 'approved_id', :foreign_key => 'id', :class_name => self.name + belongs_to :approved_record, -> { unscoped(where: :approval_status) }, :foreign_key => 'approved_id', :primary_key => 'id', :class_name => self.name validates_uniqueness_of :approved_id, :allow_blank => true validate :validate_unapproved_record - def self.default_scope - where approval_status: 'A' - end - + default_scope { where('approval_status = ?', 'A') } after_create :on_create_create_unapproved_record_entry after_destroy :on_destory_remove_unapproved_record_entries @@ -67,7 +64,7 @@ def enable_approve_button? self.approval_status == 'U' ? true : false end - def on_create_create_unapproved_record_entry + def on_create_create_unapproved_record_entry if approval_status == 'U' UnapprovedRecord.create!(:approvable => self) end From a39d56652c5c19be075f140d6226591d22ce88e3 Mon Sep 17 00:00:00 2001 From: NileshPanchal Date: Mon, 6 Nov 2017 07:06:06 +0530 Subject: [PATCH 07/10] changes for rails v5.1 - iteration 05 --- lib/approval2/controller_additions.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/approval2/controller_additions.rb b/lib/approval2/controller_additions.rb index 5854610..94b4099 100644 --- a/lib/approval2/controller_additions.rb +++ b/lib/approval2/controller_additions.rb @@ -23,7 +23,7 @@ def modelKlass def before_index if (params[:approval_status].present? and params[:approval_status] == 'U') x = modelKlass.unscoped.where("approval_status =?",'U').order("id desc") - instance_variable_set("@#{modelName}s", x.paginate(:per_page => 10, :page => params[:page])) + instance_variable_set("@#{modelName}s", x) end end From afbd8277ab4d156b05666249f78fb746ad745133 Mon Sep 17 00:00:00 2001 From: Lavanya Ramamoorthy Date: Mon, 6 Nov 2017 15:06:49 +0530 Subject: [PATCH 08/10] changes for unscoped_association & instance variable for approve method --- approval2.gemspec | 1 + lib/approval2/controller_additions.rb | 1 + lib/approval2/model_additions.rb | 4 ++-- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/approval2.gemspec b/approval2.gemspec index 5cc5d04..ffe54d4 100644 --- a/approval2.gemspec +++ b/approval2.gemspec @@ -24,4 +24,5 @@ Gem::Specification.new do |spec| spec.add_development_dependency "rake", "~> 10.0" spec.add_dependency "audited" spec.add_dependency "will_paginate" + spec.add_dependency "unscoped_associations" end diff --git a/lib/approval2/controller_additions.rb b/lib/approval2/controller_additions.rb index 94b4099..fa39fac 100644 --- a/lib/approval2/controller_additions.rb +++ b/lib/approval2/controller_additions.rb @@ -48,6 +48,7 @@ def before_approve flash[:alert] = msg raise ActiveRecord::Rollback end + instance_variable_set("@#{modelName}", approved_record) end end end diff --git a/lib/approval2/model_additions.rb b/lib/approval2/model_additions.rb index 468224a..2677ea5 100644 --- a/lib/approval2/model_additions.rb +++ b/lib/approval2/model_additions.rb @@ -9,8 +9,8 @@ module ModelAdditions has_one :unapproved_record_entry, :as => :approvable, :class_name => '::UnapprovedRecord' # refers to the approved/unapproved record in the model - belongs_to :unapproved_record, -> { unscoped(where: :approval_status) }, :primary_key => 'approved_id', :foreign_key => 'id', :class_name => self.name - belongs_to :approved_record, -> { unscoped(where: :approval_status) }, :foreign_key => 'approved_id', :primary_key => 'id', :class_name => self.name + belongs_to :unapproved_record, -> { unscope(where: :approval_status) }, :primary_key => 'approved_id', :foreign_key => 'id', :class_name => self.name + belongs_to :approved_record, -> { unscope(where: :approval_status) }, :foreign_key => 'approved_id', :primary_key => 'id', :class_name => self.name validates_uniqueness_of :approved_id, :allow_blank => true validate :validate_unapproved_record From 82efce27b23190d2296ce509a3d7248060eacedc Mon Sep 17 00:00:00 2001 From: Lavanya Ramamoorthy Date: Tue, 7 Nov 2017 06:00:45 +0530 Subject: [PATCH 09/10] changes to approval method --- lib/approval2/controller_additions.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/approval2/controller_additions.rb b/lib/approval2/controller_additions.rb index fa39fac..2564303 100644 --- a/lib/approval2/controller_additions.rb +++ b/lib/approval2/controller_additions.rb @@ -42,13 +42,14 @@ def before_approve modelKlass.transaction do approved_record = x.approve if approved_record.save + instance_variable_set("@#{modelName}", approved_record) flash[:alert] = "#{modelName.humanize.titleize} record was approved successfully" else msg = approved_record.errors.full_messages flash[:alert] = msg + instance_variable_set("@#{modelName}", x) raise ActiveRecord::Rollback end - instance_variable_set("@#{modelName}", approved_record) end end end From 4ebc3c71b9d9c815a412cf56788716cbfa05a0cc Mon Sep 17 00:00:00 2001 From: divyajayan Date: Sat, 28 Apr 2018 13:39:51 +0530 Subject: [PATCH 10/10] fixed issues in default scope and association --- lib/approval2/model_additions.rb | 5 ++++- lib/approval2/version.rb | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/approval2/model_additions.rb b/lib/approval2/model_additions.rb index 2677ea5..67adf99 100644 --- a/lib/approval2/model_additions.rb +++ b/lib/approval2/model_additions.rb @@ -5,6 +5,10 @@ module ModelAdditions included do audited except: [:approval_status, :last_action] + default_scope { where(approval_status: 'A') } + + after_initialize { self.approval_status = 'U' if new_record? } + # refers to the unapproved record in the common unapproved_record model, this is true only for U records has_one :unapproved_record_entry, :as => :approvable, :class_name => '::UnapprovedRecord' @@ -15,7 +19,6 @@ module ModelAdditions validates_uniqueness_of :approved_id, :allow_blank => true validate :validate_unapproved_record - default_scope { where('approval_status = ?', 'A') } after_create :on_create_create_unapproved_record_entry after_destroy :on_destory_remove_unapproved_record_entries diff --git a/lib/approval2/version.rb b/lib/approval2/version.rb index 28bcefc..7aa42b4 100644 --- a/lib/approval2/version.rb +++ b/lib/approval2/version.rb @@ -1,3 +1,3 @@ module Approval2 - VERSION = "0.1.9" + VERSION = "0.2.0" end