ensurance 0.1.15 → 0.1.16

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
  SHA256:
3
- metadata.gz: 9dc0cb170529eaf783a26f087ee9a64c47403a7a881b098fed4417b6d289c78a
4
- data.tar.gz: 5663a75b82064550e92d3c57ed89d508fb8c5186e78e27fa9ef73f25c3599282
3
+ metadata.gz: 7675cd410c9fa7bcb7dc42b2f5a133e87025b52afef3741eebae60cf071def52
4
+ data.tar.gz: bca8136a4278bbdd298cfd4e1de29594c5431ad79388b1a17ef89edf9b0a426d
5
5
  SHA512:
6
- metadata.gz: b81c806ee2c6b15a527565f68d88bc2925f0548b023cd0bc9eaf7e7dacaf9510191a9ef2e7cd1797b8c3a62b5f35abd476abf19f37f67bd841969529bd82c6b3
7
- data.tar.gz: 431dd8252c904e563cf7d69a31a42d095d4cd4576104e81e38c33d0d60502f4f03886065194a36c1dcef87d65ef9e2476ae98df310ee3653d7ce50995c568341
6
+ metadata.gz: 2092f81cb9d3dc738a6ac4c8ca99970a313a81a6c6dfe7262aafb00215a751932c66f3a815c21a638d995ddfaa07045c82b7373f0cb35989daec864818177056
7
+ data.tar.gz: 2ff2921bbb02f2c32aacabacde7febe85da921c177e1c3ede7a9835c7a198e979787f52ec9e1970eaa5e1380c4b5cc9e879ee0e8bd9ffe5810d125be17702a07
data/lib/ensurance.rb CHANGED
@@ -10,9 +10,16 @@ module Ensurance
10
10
  extend ActiveSupport::Concern
11
11
 
12
12
  class_methods do
13
- def ensure_by(*args)
13
+ @_additional_ensure_by = []
14
+ @_ensure_order = nil
15
+ @_ensure_by = []
16
+
17
+ def ensure_by(*args, order: nil)
14
18
  @_additional_ensure_by = args
15
- @_ensure_by = nil
19
+ @_ensure_order = (order || primary_key).to_s
20
+ @_ensure_by = [@_additional_ensure_by || primary_key].flatten.compact.uniq
21
+ # ap "Ensure By: #{self}.#{@_ensure_by} Order: #{self}.#{@_ensure_order}"
22
+ raise ArgumentError.new("#{self} does not have column[#{@_ensure_order}] to sort by") unless self.column_names.include?(@_ensure_order)
16
23
  end
17
24
 
18
25
  def ensure(thing = nil)
@@ -29,6 +36,7 @@ module Ensurance
29
36
  end
30
37
 
31
38
  @_ensure_by ||= [@_additional_ensure_by || primary_key].flatten.compact.uniq
39
+ @_ensure_order ||= primary_key
32
40
 
33
41
  found = []
34
42
  things = [thing].flatten
@@ -42,7 +50,9 @@ module Ensurance
42
50
  if ensure_field.to_sym == :id
43
51
  begin
44
52
  # Always return the most recent record that matches
45
- record = where(ensure_field => value).order(created_at: :desc).first
53
+ query = where(ensure_field => value)
54
+ query = query.order("#{@_ensure_order}" => 'desc')
55
+ record = query.first
46
56
  rescue ActiveRecord::RecordNotFound
47
57
  nil
48
58
  end
@@ -12,12 +12,12 @@ module Ensurance
12
12
  module ClassMethods
13
13
  def ensure(thing)
14
14
  case thing.class.name
15
+ when 'NilClass'
16
+ nil
15
17
  when 'Hash', 'HashWithIndifferentAccess'
16
18
  thing
17
19
  when 'String'
18
20
  JSON.parse(thing)
19
- when 'NilClass'
20
- nil
21
21
  when 'ActionController::UnfilteredParameters', 'ActionController::Parameters'
22
22
  thing.permit!.to_h
23
23
  else
@@ -1,3 +1,3 @@
1
1
  module Ensurance
2
- VERSION = '0.1.15'.freeze
2
+ VERSION = '0.1.16'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ensurance
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.15
4
+ version: 0.1.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Sharpe
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-04 00:00:00.000000000 Z
11
+ date: 2018-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport