acts_as_table 0.0.2 → 0.0.3
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 +4 -4
- data/app/models/acts_as_table/record.rb +5 -5
- data/app/models/acts_as_table/row_model.rb +8 -6
- data/db/migrate/1_acts_as_table_migration.rb +5 -4
- data/lib/acts_as_table/mapper.rb +1 -1
- data/lib/acts_as_table/reader.rb +20 -4
- data/lib/acts_as_table/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '094c1ccc47c5be95fd0ff783f99def543ec3aa957dbc62198e7c25d4299d9413'
|
4
|
+
data.tar.gz: 1691a2c67650095b28a07945d92169175beaa1fd705240af81cf09c48298435c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10df998cefe210b72efefc907d000cfd50e5b0b68cbe658f96eff8f60362ebc26e7abb197af21cc3415c534274b882c7c56c6286ae2520596faf239fb204ade5
|
7
|
+
data.tar.gz: b8f8aed8df7ac0dc6844b54801edd40d113e0e16f0ec88bb1c641551ed316e626e753741311b9ff7201455089b6b9c66aeb07d1436bb0e27b86bdc8866290829
|
@@ -80,17 +80,17 @@ module ActsAsTable
|
|
80
80
|
|
81
81
|
# validates :record_model_changed, **{}
|
82
82
|
|
83
|
-
validate :
|
83
|
+
validate :base_must_be_valid_class, :record_model_must_belong_to_row_model_for_table, **{
|
84
84
|
if: ::Proc.new { |record| record.record_model.present? },
|
85
85
|
}
|
86
86
|
|
87
87
|
private
|
88
88
|
|
89
89
|
# @return [void]
|
90
|
-
def
|
91
|
-
self.
|
92
|
-
unless
|
93
|
-
self.errors.add('
|
90
|
+
def base_must_be_valid_class
|
91
|
+
self.base_type.try { |base_type|
|
92
|
+
unless base_type.nil? || base_type.eql?(self.record_model.class_name)
|
93
|
+
self.errors.add('base_type', :invalid)
|
94
94
|
end
|
95
95
|
}
|
96
96
|
end
|
@@ -180,16 +180,18 @@ module ActsAsTable
|
|
180
180
|
}
|
181
181
|
|
182
182
|
new_record_or_persisted.errors[attribute_name].each do |message|
|
183
|
-
value.record_errors.build(attribute_name: attribute_name, message: message)
|
183
|
+
value.record_errors.build(attribute_name: attribute_name, message: message) do |record_error|
|
184
|
+
record.record_errors.proxy_association.add_to_target(record_error)
|
185
|
+
end
|
184
186
|
end
|
185
187
|
end
|
186
188
|
end
|
187
189
|
|
188
|
-
new_record_or_persisted.errors.each do |attribute_name, message|
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
end
|
190
|
+
# new_record_or_persisted.errors.each do |attribute_name, message|
|
191
|
+
# unless attribute_names.include?(attribute_name.to_s)
|
192
|
+
# record.record_errors.build(attribute_name: attribute_name, message: message)
|
193
|
+
# end
|
194
|
+
# end
|
193
195
|
end
|
194
196
|
}
|
195
197
|
end
|
@@ -13,7 +13,6 @@ ActsAsTableMigration.class_eval do
|
|
13
13
|
|
14
14
|
t.timestamps null: false
|
15
15
|
end
|
16
|
-
add_foreign_key ActsAsTable.row_models_table, ActsAsTable.record_models_table, column: 'root_record_model_id'
|
17
16
|
|
18
17
|
create_table ActsAsTable.column_models_table do |t|
|
19
18
|
t.references :row_model, index: true, foreign_key: { to_table: ActsAsTable.row_models_table }, null: true
|
@@ -92,8 +91,6 @@ ActsAsTableMigration.class_eval do
|
|
92
91
|
|
93
92
|
t.timestamps null: false
|
94
93
|
end
|
95
|
-
add_foreign_key ActsAsTable.belongs_tos_table, ActsAsTable.record_models_table, column: 'source_record_model_id'
|
96
|
-
add_foreign_key ActsAsTable.belongs_tos_table, ActsAsTable.record_models_table, column: 'target_record_model_id'
|
97
94
|
|
98
95
|
create_table ActsAsTable.has_manies_table do |t|
|
99
96
|
t.references :row_model, index: true, foreign_key: { to_table: ActsAsTable.row_models_table }, null: false
|
@@ -105,7 +102,6 @@ ActsAsTableMigration.class_eval do
|
|
105
102
|
|
106
103
|
t.timestamps null: false
|
107
104
|
end
|
108
|
-
add_foreign_key ActsAsTable.has_manies_table, ActsAsTable.record_models_table, column: 'source_record_model_id'
|
109
105
|
|
110
106
|
create_table ActsAsTable.has_many_targets_table do |t|
|
111
107
|
t.references :has_many, index: true, foreign_key: { to_table: ActsAsTable.has_manies_table }, null: false
|
@@ -165,6 +161,11 @@ ActsAsTableMigration.class_eval do
|
|
165
161
|
|
166
162
|
t.integer :record_errors_count, null: false, default: 0
|
167
163
|
end
|
164
|
+
|
165
|
+
add_foreign_key ActsAsTable.belongs_tos_table, ActsAsTable.record_models_table, column: 'source_record_model_id'
|
166
|
+
add_foreign_key ActsAsTable.belongs_tos_table, ActsAsTable.record_models_table, column: 'target_record_model_id'
|
167
|
+
add_foreign_key ActsAsTable.has_manies_table, ActsAsTable.record_models_table, column: 'source_record_model_id'
|
168
|
+
add_foreign_key ActsAsTable.row_models_table, ActsAsTable.record_models_table, column: 'root_record_model_id'
|
168
169
|
end
|
169
170
|
|
170
171
|
def self.down
|
data/lib/acts_as_table/mapper.rb
CHANGED
@@ -78,7 +78,7 @@ module ActsAsTable
|
|
78
78
|
#
|
79
79
|
# @param [String, Regexp] from
|
80
80
|
# @param [Hash<Symbol, Object>] options
|
81
|
-
# @option options [String] to
|
81
|
+
# @option options [String] :to
|
82
82
|
# @return [ActsAsTable::Mapper::ForeignKey]
|
83
83
|
#
|
84
84
|
# @example Map from a string to another string.
|
data/lib/acts_as_table/reader.rb
CHANGED
@@ -1,4 +1,16 @@
|
|
1
1
|
module ActsAsTable
|
2
|
+
# ActsAsTable reader error.
|
3
|
+
class ReaderError < ArgumentError
|
4
|
+
end
|
5
|
+
|
6
|
+
# Raised when the headers are not found.
|
7
|
+
class HeadersNotFound < ReaderError
|
8
|
+
end
|
9
|
+
|
10
|
+
# Raised when the headers do not match the ActsAsTable row model.
|
11
|
+
class InvalidHeaders < ReaderError
|
12
|
+
end
|
13
|
+
|
2
14
|
# ActsAsTable reader object.
|
3
15
|
#
|
4
16
|
# @!attribute [r] row_model
|
@@ -71,7 +83,8 @@ module ActsAsTable
|
|
71
83
|
# Returns a pair, where the first element is the headers and the second element is a flag that indicates if input stream is at end of file.
|
72
84
|
#
|
73
85
|
# @return [Array<Object>]
|
74
|
-
# @raise [
|
86
|
+
# @raise [ActsAsTable::HeadersNotFound] If the headers are not found by this ActsAsTable reader object.
|
87
|
+
# @raise [ActsAsTable::InvalidHeaders] If the headers do not match the ActsAsTable row model for this ActsAsTable reader object.
|
75
88
|
def read_headers
|
76
89
|
# @return [ActsAsTable::Headers::Array]
|
77
90
|
headers = @row_model.to_headers
|
@@ -91,11 +104,11 @@ module ActsAsTable
|
|
91
104
|
}
|
92
105
|
|
93
106
|
if rows.any?(&:nil?)
|
94
|
-
raise ::
|
107
|
+
raise ActsAsTable::HeadersNotFound.new("#{self.class}#read_headers - must exist")
|
95
108
|
end
|
96
109
|
|
97
110
|
unless [headers, rows].transpose.all? { |pair| pair[0] == pair[1] }
|
98
|
-
raise ::
|
111
|
+
raise ActsAsTable::InvalidHeaders.new("#{self.class}#read_headers - invalid")
|
99
112
|
end
|
100
113
|
|
101
114
|
[rows, eof]
|
@@ -113,7 +126,8 @@ module ActsAsTable
|
|
113
126
|
# @yieldparam [Array<String, nil>, nil] row
|
114
127
|
# @yieldreturn [void]
|
115
128
|
# @return [Enumerable<Array<String, nil>, nil>]
|
116
|
-
# @raise [
|
129
|
+
# @raise [ActsAsTable::HeadersNotFound] If the headers are not found by this ActsAsTable reader object.
|
130
|
+
# @raise [ActsAsTable::InvalidHeaders] If the headers do not match the ActsAsTable row model for this ActsAsTable reader object.
|
117
131
|
def each_row(&block)
|
118
132
|
::Enumerator.new { |enumerator|
|
119
133
|
headers, eof = *self.read_headers
|
@@ -131,6 +145,8 @@ module ActsAsTable
|
|
131
145
|
# Returns a new ActsAsTable table object by reading all rows in the input stream.
|
132
146
|
#
|
133
147
|
# @return [ActsAsTable::Table]
|
148
|
+
# @raise [ActsAsTable::HeadersNotFound] If the headers are not found by this ActsAsTable reader object.
|
149
|
+
# @raise [ActsAsTable::InvalidHeaders] If the headers do not match the ActsAsTable row model for this ActsAsTable reader object.
|
134
150
|
# @raise [ArgumentError] If the name of a class for a given record does not match the class name for the corresponding ActsAsTable record model.
|
135
151
|
def read_table
|
136
152
|
ActsAsTable::Table.new do |table|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_table
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Borkum
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-06-
|
11
|
+
date: 2021-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|