active_type 0.6.5 → 0.7.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
  SHA1:
3
- metadata.gz: b4bf4915cad405c3d858207c320b7f6bff1e863b
4
- data.tar.gz: 9f26bc739b267f5aa9e426cf95998a59a1179307
3
+ metadata.gz: bbf0c969c67a643824d8195b0fe7ce13215660e7
4
+ data.tar.gz: c2581b3a4733b6f03f68809beb919586e535d6c0
5
5
  SHA512:
6
- metadata.gz: d58e818a7494dda7c9a7694a8135f455ea89f2442ceef570ff957589394898ffde018922a8616365948114a5dc1cf4633d6812ddee01d82c33adbd5dcea4cb3a
7
- data.tar.gz: eaf042ca9d72a07bea1294c512d7713e1bb35e39217904fc07946cad407061db0acb51b6dc5df61a975a381d9bda3f4bd13dd90b60b906ff231ecaaf8a74503c
6
+ metadata.gz: 148518ebba3e5f54bb207290c38a7e29d3b842022faa579df939902e10fb5450413ef71a8f467d2d639a9e9cc7415ed2df6fcbf5fb7ae1fb7c95695426c2d062
7
+ data.tar.gz: 10d6b1f5441d01bc2fa7d8c8c002d5a7ff398cf186c352c3c6be80471055015427ec51ddfeefd4155b26105d6605f8e6bcf2d78b5a4fe17edcabfd5b60c0f170
data/.travis.yml CHANGED
@@ -54,3 +54,9 @@ matrix:
54
54
  gemfile: gemfiles/Gemfile.3.2.mysql2
55
55
  - rvm: "2.2.4"
56
56
  gemfile: gemfiles/Gemfile.4.1.sqlite3
57
+ install:
58
+ # Replace default Travis CI bundler script with a version that doesn't
59
+ # explode when lockfile doesn't match recently bumped version
60
+ - gem uninstall bundler -x -I
61
+ - gem install bundler --version='=1.12.5'
62
+ - bundle install --jobs=3 --retry=3 --path=${BUNDLE_PATH:-vendor/bundle}
data/README.md CHANGED
@@ -308,6 +308,13 @@ Supported options for `nests_many` / `nests_one` are:
308
308
  nests_many :documents, default: proc { Documents.all }
309
309
  ```
310
310
 
311
+ Options supported exclusively by `nests_many` are:
312
+
313
+ - `index_errors`
314
+
315
+ Use a boolean to get indexed errors on related records. In Rails 5 you can make it global with
316
+ `config.active_record.index_nested_attribute_errors = true`.
317
+
311
318
 
312
319
  Casting records or relations
313
320
  ----------------------------
@@ -9,13 +9,18 @@ module ActiveType
9
9
  class Association
10
10
 
11
11
  def initialize(owner, target_name, options = {})
12
- options.assert_valid_keys(:build_scope, :find_scope, :scope, :allow_destroy, :reject_if)
12
+ options.assert_valid_keys(*valid_options)
13
13
 
14
14
  @owner = owner
15
15
  @target_name = target_name.to_sym
16
16
  @allow_destroy = options.fetch(:allow_destroy, false)
17
17
  @reject_if = options.delete(:reject_if)
18
18
  @options = options.dup
19
+ @index_errors = if ActiveRecord::VERSION::MAJOR < 5
20
+ @options[:index_errors]
21
+ else
22
+ @options[:index_errors] || ActiveRecord::Base.index_nested_attribute_errors
23
+ end
19
24
  end
20
25
 
21
26
  def assign_attributes(parent, attributes)
@@ -36,10 +41,10 @@ module ActiveType
36
41
  end
37
42
 
38
43
  def validate(parent)
39
- changed_children(parent).each do |child|
44
+ changed_children(parent).each_with_index do |child, index|
40
45
  unless child.valid?
41
46
  child.errors.each do |attribute, message|
42
- attribute = "#{@target_name}.#{attribute}"
47
+ attribute = @index_errors ? "#{@target_name}[#{index}].#{attribute}" : "#{@target_name}.#{attribute}"
43
48
  parent.errors[attribute] << message
44
49
  parent.errors[attribute].uniq!
45
50
  end
@@ -122,6 +127,10 @@ module ActiveType
122
127
  result
123
128
  end
124
129
 
130
+ def valid_options
131
+ [:build_scope, :find_scope, :scope, :allow_destroy, :reject_if]
132
+ end
133
+
125
134
  end
126
135
 
127
136
  end
@@ -64,6 +64,10 @@ module ActiveType
64
64
  @target_name.to_s.classify
65
65
  end
66
66
 
67
+ def valid_options
68
+ super + [:index_errors]
69
+ end
70
+
67
71
  end
68
72
 
69
73
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveType
2
- VERSION = '0.6.5'
2
+ VERSION = '0.7.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_type
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.5
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Kraze
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-04-03 00:00:00.000000000 Z
12
+ date: 2017-04-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler