activerecord-bixformer 0.3.16 → 0.3.17

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: 6f547ae90489b5f2aef0914a5730dffce3354399
4
- data.tar.gz: 797acc403c81992e1f5f3b5a886ec3dbabf25e10
3
+ metadata.gz: 7a553dd137e4cb28794ed4ee3dc0d23021c6a6a5
4
+ data.tar.gz: 4e95330e0d2e63fd593f0edff3f2308675b5a877
5
5
  SHA512:
6
- metadata.gz: 7b899f99643b000fa4c6c70eee259706db52cf1884f0c799a4b9c4cf790711ff71c533db1e6b1818f6e5a3cc2a0afc9c3fe3ac80c0bfcf9982a6f8bcda84ed22
7
- data.tar.gz: 929768ac1b7fc4795b3c27755d75ab5892594ff5e6b929db64bdb396b19a8f79568c85832caa168829ad1beda774e796486e36b55dfe15410696a96a1d7e9a3f
6
+ metadata.gz: 5267c6cb19fdc3033fa5b1c237cccfa8f54690ae3747cb21552b69b549c1db2b1d4d924f5ae4e1c80ecf7b4aa0363f8fef15a7b6cc682444a796a4a405fa7ba8
7
+ data.tar.gz: d03a119e6beac47d8dd0bc54216280bde2820ef8676e2e80edfe040e5bb8b090a5782206e0f880919a695c0549840acd27795388ee9623f864224a3498126815
@@ -4,45 +4,18 @@ module ActiveRecord
4
4
  module Csv
5
5
  class Base < ::ActiveRecord::Bixformer::Model::Base
6
6
  def export(record_or_relation)
7
- run_bixformer_callback :export do
8
- values = run_bixformer_callback :export, type: :attribute do
9
- # has_one でしか使わない想定なので record_or_relation は ActiveRecord::Base のはず
10
- @attributes.map do |attr|
11
- attribute_value = if record_or_relation
12
- run_bixformer_callback :export, on: attr.name do
13
- attr.export(record_or_relation)
14
- end
15
- end
16
-
17
- [csv_title(attr.name), attribute_value]
18
- end.to_h.with_indifferent_access
19
- end
20
-
21
- run_bixformer_callback :export, type: :association do
22
- @associations.inject(values) do |each_values, association|
23
- association_value = if record_or_relation
24
- run_bixformer_callback :export, on: association.name do
25
- record_or_relation.__send__(association.name)
26
- end
27
- end
7
+ errors.clear
28
8
 
29
- each_values.merge(association.export(association_value))
30
- end
31
- end
9
+ run_bixformer_callback :export do
10
+ do_export(record_or_relation)
32
11
  end
33
12
  end
34
13
 
35
14
  def import(csv_body_row, parent_record_id = nil)
36
- run_bixformer_callback :import do
37
- values = make_each_attribute_import_value(parent_record_id) do |attr|
38
- csv_value = csv_body_row[csv_title(attr.name)]
39
-
40
- attr.import(csv_value)
41
- end
15
+ errors.clear
42
16
 
43
- make_each_association_import_value(values) do |association, self_record_id|
44
- association.import(csv_body_row, self_record_id)
45
- end
17
+ run_bixformer_callback :import do
18
+ do_import(csv_body_row, parent_record_id)
46
19
  end
47
20
  end
48
21
 
@@ -63,6 +36,45 @@ module ActiveRecord
63
36
  end
64
37
 
65
38
  alias_method :translate, :csv_title
39
+
40
+ private
41
+
42
+ def do_export(record_or_relation)
43
+ values = run_bixformer_callback :export, type: :attribute do
44
+ # has_one でしか使わない想定なので record_or_relation は ActiveRecord::Base のはず
45
+ @attributes.map do |attr|
46
+ attribute_value = if record_or_relation
47
+ run_bixformer_callback :export, on: attr.name do
48
+ attr.export(record_or_relation)
49
+ end
50
+ end
51
+
52
+ [csv_title(attr.name), attribute_value]
53
+ end.to_h.with_indifferent_access
54
+ end
55
+
56
+ run_bixformer_callback :export, type: :association do
57
+ @associations.inject(values) do |each_values, association|
58
+ association_value = if record_or_relation
59
+ run_bixformer_callback :export, on: association.name do
60
+ record_or_relation.__send__(association.name)
61
+ end
62
+ end
63
+
64
+ each_values.merge(association.export(association_value))
65
+ end
66
+ end
67
+ end
68
+
69
+ def do_import(csv_body_row, parent_record_id = nil)
70
+ values = make_each_attribute_import_value(parent_record_id) do |attr|
71
+ attr.import(csv_body_row[csv_title(attr.name)])
72
+ end
73
+
74
+ make_each_association_import_value(values) do |association, self_record_id|
75
+ association.import(csv_body_row, self_record_id)
76
+ end
77
+ end
66
78
  end
67
79
  end
68
80
  end
@@ -12,20 +12,28 @@ module ActiveRecord
12
12
  def export(record_or_relation)
13
13
  record_or_relation ||= []
14
14
 
15
- # has_many でしか使わない想定なので record_or_relation は ActiveRecord::Relation のはず
16
- (1..options[:size]).inject({}) do |values, index|
17
- update_translator(index)
15
+ errors.clear
16
+
17
+ run_bixformer_callback :export do
18
+ # has_many でしか使わない想定なので record_or_relation は ActiveRecord::Relation のはず
19
+ (1..options[:size]).inject({}) do |values, index|
20
+ update_translator(index)
18
21
 
19
- values.merge(super(record_or_relation[index-1]))
22
+ values.merge(do_export(record_or_relation[index-1]))
23
+ end
20
24
  end
21
25
  end
22
26
 
23
27
  def import(csv_body_row, parent_record_id = nil)
24
- # has_many でしか使わない想定なので ActiveRecord::Relation を返却
25
- (1..options[:size]).map do |index|
26
- update_translator(index)
28
+ errors.clear
27
29
 
28
- super
30
+ run_bixformer_callback :import do
31
+ # has_many でしか使わない想定なので ActiveRecord::Relation を返却
32
+ (1..options[:size]).map do |index|
33
+ update_translator(index)
34
+
35
+ do_import(csv_body_row, parent_record_id)
36
+ end
29
37
  end
30
38
  end
31
39
 
@@ -15,18 +15,26 @@ module ActiveRecord
15
15
  # has_many でしか使わない想定なので record_or_relation は ActiveRecord::Relation のはず
16
16
  record_of = record_or_relation&.where(@options[:key] => @options[:in])&.index_by(@options[:key]) || {}
17
17
 
18
- @options[:in].inject({}) do |values, key|
19
- update_translator(key)
18
+ errors.clear
19
+
20
+ run_bixformer_callback :export do
21
+ @options[:in].inject({}) do |values, key|
22
+ update_translator(key)
20
23
 
21
- values.merge(super(record_of[key]))
24
+ values.merge(do_export(record_of[key]))
25
+ end
22
26
  end
23
27
  end
24
28
 
25
29
  def import(csv_body_row, parent_record_id = nil)
26
- @options[:in].map do |key|
27
- update_translator(key)
30
+ errors.clear
28
31
 
29
- super
32
+ run_bixformer_callback :import do
33
+ @options[:in].map do |key|
34
+ update_translator(key)
35
+
36
+ do_import(csv_body_row, parent_record_id)
37
+ end
30
38
  end
31
39
  end
32
40
 
@@ -1,5 +1,5 @@
1
1
  module ActiveRecord
2
2
  module Bixformer
3
- VERSION = "0.3.16"
3
+ VERSION = "0.3.17"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-bixformer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.16
4
+ version: 0.3.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroaki Otsu