abstracted 0.4.18 → 0.4.19

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 28a297762d066864f6f4c3da7e4dc34996d046c7
4
- data.tar.gz: 74259d425c5d4d14e5bd4636ddd8be149eef7a73
3
+ metadata.gz: 5f309a297bbc369a2a3693a54563015d3a34fc8a
4
+ data.tar.gz: c93e92f892409ff44eed586d4c53a5a6f52b6d9f
5
5
  SHA512:
6
- metadata.gz: 6fd3299a894de29a3f0b23f0c0ef6c7e6de39e6e53f98275617ae895b7a543aafd16501d6b0a9a03031ffc384fd039c518a1918c64d55acedd6f8f7b2d6d4a27
7
- data.tar.gz: afe97506115e9d7567bcd129bbc08556649b41c56145eeebf079f89b687c6d7248c80fdddd39eed784ebc0d363629d78837f577394bf6b55e7bf08c6d61f9242
6
+ metadata.gz: 07483e6fadc06647f0dd45ff5ce975e3fbc74bd5a0c86223f92b7db6331fde70969ec5fcafe8bd69775a082a4e558872eb7b7d74b93a35ae7bb3ec8a95769c96
7
+ data.tar.gz: 50ee9160bbcdbc989efd49ca1fae2ab8c4b30646a7d19e70f2779b4adcafcdd87321715053258dd488cf23ab761a0b3ade44321a22c4774db0261fbde971e85d
@@ -163,5 +163,48 @@ class AbstractResource < ActiveRecord::Base
163
163
  update_attributes active: false
164
164
  end
165
165
 
166
+ #
167
+ # will lock a record - provided the record responds to :record_lock field
168
+ # and will unlock the record - provided an argument TRUE is provided
169
+ #
170
+ def lock_record? unlock=false
171
+ return false unless respond_to? :record_lock
172
+
173
+ reload
174
+ return false unless [ 0, current_user.id ].include? record_lock.to_i
175
+
176
+ case unlock
177
+ when true
178
+ begin
179
+ self.with_lock do
180
+ update_attributes record_lock: 0
181
+ true
182
+ end
183
+ rescue e
184
+ case e
185
+ when ActiveRecord::StaleObjectError
186
+ return false
187
+ else
188
+ raise e
189
+ end
190
+ end
191
+ else
192
+ begin
193
+ self.with_lock do
194
+ update_attributes record_lock: current_user.id
195
+ record_lock.to_i == current_user.id
196
+ end
197
+ rescue e
198
+ case e
199
+ when ActiveRecord::StaleObjectError
200
+ return false
201
+ else
202
+ raise e
203
+ end
204
+ end
205
+ end
206
+ end
207
+
208
+
166
209
 
167
210
  end
@@ -1,3 +1,3 @@
1
1
  module Abstracted
2
- VERSION = "0.4.18"
2
+ VERSION = "0.4.19"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abstracted
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.18
4
+ version: 0.4.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Walther H Diechmann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-11 00:00:00.000000000 Z
11
+ date: 2017-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails