activerecord-bixformer 0.2.4 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/activerecord-bixformer/attribute/base.rb +8 -2
- data/lib/activerecord-bixformer/attribute/boolean.rb +2 -2
- data/lib/activerecord-bixformer/attribute/booletania.rb +3 -1
- data/lib/activerecord-bixformer/attribute/date.rb +3 -1
- data/lib/activerecord-bixformer/attribute/enumerize.rb +2 -2
- data/lib/activerecord-bixformer/attribute/override.rb +2 -2
- data/lib/activerecord-bixformer/attribute/string.rb +2 -2
- data/lib/activerecord-bixformer/attribute/time.rb +3 -1
- data/lib/activerecord-bixformer/model/base.rb +0 -18
- data/lib/activerecord-bixformer/model/csv/base.rb +17 -0
- data/lib/activerecord-bixformer/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1372a26753e6dc7dc2d178f00a9d3e54aed1973a
|
4
|
+
data.tar.gz: 9089e7d6d4b0344409a6f59a8d5a28e97fa4708d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0935d90425fe726f56de126f08671a1807959b6a62f1aa0572aef5ff1356e4b33526c1b903c9f6065ac9f89718053111f77f8df26a5eb50be1efc5a4c4bfcd26
|
7
|
+
data.tar.gz: 850006053e33be9a96a827b0c16b88aecafffeea36e126ebe0589612ee93a47cae24c436fbbe3fed7ddf25f0a0ec381c015b6d28b1857091d1416e197c208599
|
@@ -10,13 +10,19 @@ module ActiveRecord
|
|
10
10
|
@options = (options.is_a?(::Hash) ? options : {}).with_indifferent_access
|
11
11
|
end
|
12
12
|
|
13
|
-
def export(
|
14
|
-
record_attribute_value
|
13
|
+
def export(record)
|
14
|
+
record_attribute_value(record)
|
15
15
|
end
|
16
16
|
|
17
17
|
def import(value)
|
18
18
|
value
|
19
19
|
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def record_attribute_value(record)
|
24
|
+
record.__send__(@name)
|
25
|
+
end
|
20
26
|
end
|
21
27
|
end
|
22
28
|
end
|
@@ -2,11 +2,11 @@ module ActiveRecord
|
|
2
2
|
module Bixformer
|
3
3
|
module Attribute
|
4
4
|
class Boolean < ::ActiveRecord::Bixformer::Attribute::Base
|
5
|
-
def export(
|
5
|
+
def export(record)
|
6
6
|
true_value = (@options.is_a?(::Hash) && @options[:true]) || 'true'
|
7
7
|
false_value = (@options.is_a?(::Hash) && @options[:false]) || 'false'
|
8
8
|
|
9
|
-
record_attribute_value.present? ? true_value : false_value
|
9
|
+
record_attribute_value(record).present? ? true_value : false_value
|
10
10
|
end
|
11
11
|
|
12
12
|
def import(value)
|
@@ -2,7 +2,9 @@ module ActiveRecord
|
|
2
2
|
module Bixformer
|
3
3
|
module Attribute
|
4
4
|
class Booletania < ::ActiveRecord::Bixformer::Attribute::Base
|
5
|
-
def export(
|
5
|
+
def export(record)
|
6
|
+
record_attribute_value = record_attribute_value(record)
|
7
|
+
|
6
8
|
@model.activerecord_constant.__send__("#{@name}_options").find do |text, bool|
|
7
9
|
bool == record_attribute_value
|
8
10
|
end&.first
|
@@ -2,7 +2,9 @@ module ActiveRecord
|
|
2
2
|
module Bixformer
|
3
3
|
module Attribute
|
4
4
|
class Date < ::ActiveRecord::Bixformer::Attribute::Base
|
5
|
-
def export(
|
5
|
+
def export(record)
|
6
|
+
record_attribute_value = record_attribute_value(record)
|
7
|
+
|
6
8
|
return nil unless record_attribute_value
|
7
9
|
|
8
10
|
record_attribute_value.to_s(option_format)
|
@@ -2,8 +2,8 @@ module ActiveRecord
|
|
2
2
|
module Bixformer
|
3
3
|
module Attribute
|
4
4
|
class Enumerize < ::ActiveRecord::Bixformer::Attribute::Base
|
5
|
-
def export(
|
6
|
-
record_attribute_value = record_attribute_value.to_s
|
5
|
+
def export(record)
|
6
|
+
record_attribute_value = record_attribute_value(record).to_s
|
7
7
|
|
8
8
|
@model.activerecord_constant.__send__(@name).options.find do |text, key|
|
9
9
|
key == record_attribute_value
|
@@ -2,8 +2,8 @@ module ActiveRecord
|
|
2
2
|
module Bixformer
|
3
3
|
module Attribute
|
4
4
|
class Override < ::ActiveRecord::Bixformer::Attribute::Base
|
5
|
-
def export(
|
6
|
-
@model.__send__("override_export_#{@name}", record_attribute_value)
|
5
|
+
def export(record)
|
6
|
+
@model.__send__("override_export_#{@name}", record_attribute_value(record))
|
7
7
|
end
|
8
8
|
|
9
9
|
def import(value)
|
@@ -2,8 +2,8 @@ module ActiveRecord
|
|
2
2
|
module Bixformer
|
3
3
|
module Attribute
|
4
4
|
class String < ::ActiveRecord::Bixformer::Attribute::Base
|
5
|
-
def export(
|
6
|
-
record_attribute_value.to_s
|
5
|
+
def export(record)
|
6
|
+
record_attribute_value(record).to_s
|
7
7
|
end
|
8
8
|
|
9
9
|
def import(value)
|
@@ -2,7 +2,9 @@ module ActiveRecord
|
|
2
2
|
module Bixformer
|
3
3
|
module Attribute
|
4
4
|
class Time < ::ActiveRecord::Bixformer::Attribute::Base
|
5
|
-
def export(
|
5
|
+
def export(record)
|
6
|
+
record_attribute_value = record_attribute_value(record)
|
7
|
+
|
6
8
|
return nil unless record_attribute_value
|
7
9
|
|
8
10
|
record_attribute_value.to_s(option_format)
|
@@ -86,24 +86,6 @@ module ActiveRecord
|
|
86
86
|
activerecord_constant.find_by!(condition)
|
87
87
|
end
|
88
88
|
|
89
|
-
def export(record_or_records)
|
90
|
-
# has_one でしか使わない想定なので record_or_records は ActiveRecord::Base のはず
|
91
|
-
values = @attributes.map do |attr|
|
92
|
-
value_reader = attr.options[:reader] || attr.name
|
93
|
-
attribute_value = record_or_records && record_or_records.__send__(value_reader)
|
94
|
-
|
95
|
-
[csv_title(attr.name), attr.export(attribute_value)]
|
96
|
-
end.to_h.with_indifferent_access
|
97
|
-
|
98
|
-
@associations.inject(values) do |each_values, association|
|
99
|
-
association_value = record_or_records && record_or_records.__send__(association.name)
|
100
|
-
|
101
|
-
association_value = association_value.to_a if association_value.is_a?(::ActiveRecord::Relation)
|
102
|
-
|
103
|
-
each_values.merge(association.export(association_value))
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
89
|
private
|
108
90
|
|
109
91
|
def make_each_attribute_import_value(parent_record_id = nil, &block)
|
@@ -3,6 +3,23 @@ module ActiveRecord
|
|
3
3
|
module Model
|
4
4
|
module Csv
|
5
5
|
class Base < ::ActiveRecord::Bixformer::Model::Base
|
6
|
+
def export(record_or_records)
|
7
|
+
# has_one でしか使わない想定なので record_or_records は ActiveRecord::Base のはず
|
8
|
+
values = @attributes.map do |attr|
|
9
|
+
attribute_value = record_or_records && attr.export(record_or_records)
|
10
|
+
|
11
|
+
[csv_title(attr.name), attribute_value]
|
12
|
+
end.to_h.with_indifferent_access
|
13
|
+
|
14
|
+
@associations.inject(values) do |each_values, association|
|
15
|
+
association_value = record_or_records && record_or_records.__send__(association.name)
|
16
|
+
|
17
|
+
association_value = association_value.to_a if association_value.is_a?(::ActiveRecord::Relation)
|
18
|
+
|
19
|
+
each_values.merge(association.export(association_value))
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
6
23
|
def import(csv_body_row, parent_record_id = nil)
|
7
24
|
values = make_each_attribute_import_value(parent_record_id) do |attr|
|
8
25
|
csv_value = csv_body_row[csv_title(attr.name)]
|