activerecord-bixformer 0.3.16 → 0.3.17

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
  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