act_as_disabled 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 61e6ff46f6176b5cdbac24eff4391a3150df38be393e87e6b85eb9c8705d62c4
4
+ data.tar.gz: 36da483218a7fef6fdb534d449bd380b4bb162f103cc9829453cddb1f25ec0dc
5
+ SHA512:
6
+ metadata.gz: 8a613dec0166b29504959c57abff5ca5302c4d1164bfe830038c0ea7c462b87b3664200e21eea84612478335d2b8998bc0c0334fc6e101d0c07136f9ebcf4919
7
+ data.tar.gz: b8e4fcb4e94ba759128afdca609f975958f3a9442ddcea523b87cb3df9fb73d89cf9dc395305deab409a422690b104e53bed589133650941ac0557f9229ba9dc
data/LICENSE ADDED
File without changes
File without changes
@@ -0,0 +1,115 @@
1
+ module ActAsDisabled
2
+
3
+ #sort abbreviation of ActAsDisabled => aad
4
+ def self.included(base)
5
+ base.extend Query
6
+ end
7
+
8
+ module Query
9
+ def self.extended(base)
10
+ base.define_callbacks :disable
11
+ end
12
+ def aad_default_scope
13
+ scope = all
14
+ if string_type_with_deleted_value?
15
+ scope.where(aad_column => nil).or(scope.where.not(aad_column => aad_config[:deleted_value]))
16
+ elsif boolean_type_not_nullable?
17
+ scope.where(aad_column => false)
18
+ else
19
+ scope.where(aad_column => nil)
20
+ end
21
+ end
22
+
23
+ def without_aad_default_scope
24
+ scope = all
25
+ scope = scope.unscope(where: aad_column)
26
+ # Fix problems with unscope group chain
27
+ scope = scope.unscoped if scope.to_sql.include? aad_default_scope.to_sql
28
+ scope
29
+ end
30
+
31
+ # remove remove every thing from the query
32
+ # select * from models
33
+
34
+ def with_disabled
35
+ without_aad_default_scope
36
+ end
37
+
38
+ def only_disabled
39
+ if string_type_with_deleted_value?
40
+ without_aad_default_scope
41
+ .where(aad_column => aad_config[:deleted_value])
42
+ elsif boolean_type_not_nullable?
43
+ without_aad_default_scope.where(aad_column => true)
44
+ else
45
+ without_aad_default_scope.where.not(aad_column => nil)
46
+ end
47
+ end
48
+
49
+ def string_type_with_deleted_value?
50
+ aad_column_type == 'string'.to_sym && !aad_config[:deleted_value].nil?
51
+ end
52
+
53
+ def boolean_type_not_nullable?
54
+ aad_column_type == 'boolean'.to_sym && !aad_config[:allow_nulls]
55
+ end
56
+
57
+ def aad_column
58
+ aad_config[:column].to_sym
59
+ end
60
+ def aad_column_type
61
+ aad_config[:column_type].to_sym
62
+ end
63
+
64
+ def aad_column_reference
65
+ "#{table_name}.#{aad_column}"
66
+ end
67
+
68
+ def delete_now_value
69
+ case aad_config[:column_type]
70
+ when "time" then Time.now
71
+ when "boolean" then true
72
+ when "string" then aad_config[:deleted_value]
73
+ else
74
+ raise ArgumentError, "'time', 'boolean' or 'string' expected" \
75
+ " for :column_type option, got #{aad_config[:column_type]}"
76
+ end
77
+ end
78
+
79
+ end
80
+ end
81
+
82
+ ActiveSupport.on_load(:active_record) do
83
+ class ActiveRecord::Base
84
+ def self.act_as_disabled(options = {})
85
+ define_model_callbacks :disable
86
+
87
+ class_attribute :aad_config
88
+ self.aad_config = {
89
+ column: "disabled",
90
+ column_type: "boolean",
91
+ without_default_scope: false
92
+ }
93
+ if options[:column_type] == "string"
94
+ aad_config.merge!(deleted_value: "deleted")
95
+ end
96
+ aad_config.merge!(allow_nulls: false) if options[:column_type] == "boolean"
97
+ aad_config.merge!(options) #merge user
98
+
99
+ unless %w[boolean string].include? aad_config[:column_type]
100
+ raise ArgumentError, "'time', 'boolean' or 'string' expected" \
101
+ " for :column_type option, got #{aad_config[:column_type]}"
102
+ end
103
+
104
+ include ActAsDisabled
105
+
106
+ unless aad_config[:without_default_scope]
107
+ default_scope { aad_default_scope }
108
+ end
109
+
110
+ # before_disable { self.class.notify_observers(:before_disable, self) if self.class.respond_to?(:notify_observers) }
111
+ #
112
+ # after_disable { self.class.notify_observers(:after_disable, self) if self.class.respond_to?(:notify_observers) }
113
+ end
114
+ end
115
+ end
@@ -0,0 +1,3 @@
1
+ module ActAsDisabled
2
+ VERSION = '0.0.3'.freeze
3
+ end
metadata ADDED
@@ -0,0 +1,177 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: act_as_disabled
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - Neeraj Kumar
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-06-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 5.0.7
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '7.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 5.0.7
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '7.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: activesupport
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 5.0.7
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '7.0'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 5.0.7
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '7.0'
53
+ - !ruby/object:Gem::Dependency
54
+ name: bundler
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '1.5'
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '3.0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '1.5'
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '3.0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: pry
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ type: :development
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ - !ruby/object:Gem::Dependency
88
+ name: rake
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ - !ruby/object:Gem::Dependency
102
+ name: rdoc
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ type: :development
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ - !ruby/object:Gem::Dependency
116
+ name: rubocop
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: 0.85.1
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - "~>"
127
+ - !ruby/object:Gem::Version
128
+ version: 0.85.1
129
+ - !ruby/object:Gem::Dependency
130
+ name: simplecov
131
+ requirement: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - "~>"
134
+ - !ruby/object:Gem::Version
135
+ version: 0.18.1
136
+ type: :development
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - "~>"
141
+ - !ruby/object:Gem::Version
142
+ version: 0.18.1
143
+ description: Check the home page for more in-depth information.
144
+ email:
145
+ - neeraj.kumar@jarvis.consulting
146
+ executables: []
147
+ extensions: []
148
+ extra_rdoc_files: []
149
+ files:
150
+ - LICENSE
151
+ - README.md
152
+ - lib/act_as_disabled.rb
153
+ - lib/act_as_disabled/version.rb
154
+ homepage: https://github.com/
155
+ licenses:
156
+ - MIT
157
+ metadata: {}
158
+ post_install_message:
159
+ rdoc_options: []
160
+ require_paths:
161
+ - lib
162
+ required_ruby_version: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ required_rubygems_version: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ requirements: []
173
+ rubygems_version: 3.0.6
174
+ signing_key:
175
+ specification_version: 4
176
+ summary: Active Record plugin which allows you to disable and enable the record
177
+ test_files: []