better_record 0.9.3 → 0.10.0

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: 89e2cc03ce6ebc207079aa90e895f6a5e1c1b4777a83b35d4242eb389c7f9fd9
4
- data.tar.gz: d0d1a17deaa4cb0c210403e8371e8a1995bfb2ec3eebebca97976730ed78ec60
3
+ metadata.gz: 5d98e0b7f54bd71ded48d966277be30e39f485f598f0322ad7479d852a0ddb6c
4
+ data.tar.gz: d6c108b373661e0513ef8fd3044a587ede56f38dea16cda8d135e132bb27f0ff
5
5
  SHA512:
6
- metadata.gz: 1ff141f8ea7ddd914fed69710f1408c7b5e9d5715db95ef8619d9f53306d4f111fda9392685c1669724ac2627bb2cc8a287e1d53399d43b930ae18fbee47286b
7
- data.tar.gz: aa72daa57375b9301ee5d12675e1953dde08d39dcd7f7064e4208ecd540cf99614e0f2f67c3c18738beae18d4c56003ca19e27436bbbac2d62f728a79ada55ce
6
+ metadata.gz: 74489d67ad1f0ffb4454d92dbc789883c74f9dcbeb4b4255c3b0cfd752a9a90624442c853eacad355252476ee5cdd661484a39f978056f01e4dd0ce347daa4a4
7
+ data.tar.gz: ae840a61e2d9e697ecf2d130ad037fa569f75eee558a4b05013514b6055031b72bfbc82cbb03a0b6825bf0eb2f50058774310161a05985cc61c47eda2b70d6cf
@@ -36,11 +36,13 @@ module BetterRecord
36
36
  attributes.with_indifferent_access
37
37
  end
38
38
 
39
- def dup
40
- if defined? NON_DUPABLE_KEYS
41
- self.class.new(super.indifferent_attributes.except(*NON_DUPABLE_KEYS))
39
+ def dup(allow_full_dup = false)
40
+ if !allow_full_dup && self.class.const_defined?(:NON_DUPABLE_KEYS)
41
+ super().tap do |r|
42
+ r.class::NON_DUPABLE_KEYS.each {|k| r[k] = nil }
43
+ end
42
44
  else
43
- super
45
+ super()
44
46
  end
45
47
  end
46
48
  end
@@ -8,6 +8,12 @@ module BetterRecord
8
8
  module HasProtectedPassword
9
9
  extend ActiveSupport::Concern
10
10
 
11
+ included do
12
+ unless self.const_defined?(:NON_DUPABLE_KEYS)
13
+ NON_DUPABLE_KEYS = []
14
+ end
15
+ end
16
+
11
17
  module ClassMethods
12
18
  def has_protected_password(
13
19
  password_field: :password,
@@ -17,15 +23,11 @@ module BetterRecord
17
23
  **opts
18
24
  )
19
25
  # == Constants ============================================================
20
- unless const_defined?(NON_DUPABLE_KEYS)
21
- NON_DUPABLE_KEYS = []
22
- end
23
-
24
- NON_DUPABLE_KEYS |= %I[
26
+ self::NON_DUPABLE_KEYS |= %I[
25
27
  #{password_field}
26
28
  new_#{password_field}
27
29
  new_#{password_field}_confirmation
28
- ])
30
+ ]
29
31
 
30
32
  # == Attributes ===========================================================
31
33
  attribute :"new_#{password_field}", :text
@@ -21,7 +21,14 @@ module BetterRecord
21
21
  expect(record.valid?).to be true
22
22
  expect(record.save).to be true
23
23
 
24
- dupped = record.dup
24
+ dupped = nil
25
+
26
+ begin
27
+ dupped = record.dup(true)
28
+ rescue ArgumentError
29
+ dupped = record.dup
30
+ end
31
+
25
32
  expect(dupped.valid?).to be false
26
33
  expect(dupped.errors[column_name]).to include("has already been taken")
27
34
  expect(dupped.save).to be false
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BetterRecord
4
- VERSION = '0.9.3'
4
+ VERSION = '0.10.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: better_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sampson Crowley