act_as_disabled 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []