acts_as_table 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|