better_record 0.9.3 → 0.10.0

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