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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2ddec3541153f4ca9a0ed47acafd1937e4311a56cd400116a50ea615fda30eaa
4
- data.tar.gz: 19cb06bb9212a667da4c5cc220e178cd39016fd15cc97274a097f44480f9b0f0
3
+ metadata.gz: '094c1ccc47c5be95fd0ff783f99def543ec3aa957dbc62198e7c25d4299d9413'
4
+ data.tar.gz: 1691a2c67650095b28a07945d92169175beaa1fd705240af81cf09c48298435c
5
5
  SHA512:
6
- metadata.gz: 654d4d54a3a51e2c0a13c2c57cabe33b619817596cc07f3114aa69835b3e5525611de6fb2a5756e5abd98e7bc4c5fe07bc40719c77c0c2d38f0d5036fd6d1b43
7
- data.tar.gz: 1f6b40cbd24c22505c683698ef4a003c9b09cbc26978fafe7f1f6ddac925872ebdc5827d7d7a80ada8aad2c8c49a0dfac60016488b205c2122f5dc6f2fdfc548
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 :record_must_be_valid_class, :record_model_must_belong_to_row_model_for_table, **{
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 record_must_be_valid_class
91
- self.record_type.try { |record_type|
92
- unless record_type.eql?(self.record_model.class_name)
93
- self.errors.add('record_type', :invalid)
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
- unless attribute_names.include?(attribute_name.to_s)
190
- record.record_errors.build(attribute_name: attribute_name, message: message)
191
- end
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
@@ -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.
@@ -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 [ArgumentError] If the headers do not match the ActsAsTable row model for this ActsAsTable reader object.
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 ::ArgumentError.new("#{self.class}#read_headers - must exist")
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 ::ArgumentError.new("#{self.class}#read_headers - invalid")
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 [ArgumentError] If the headers do not match the ActsAsTable row model for this ActsAsTable reader object.
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|
@@ -1,4 +1,4 @@
1
1
  module ActsAsTable
2
2
  # @return [String]
3
- VERSION = '0.0.2'
3
+ VERSION = '0.0.3'
4
4
  end
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.2
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-10 00:00:00.000000000 Z
11
+ date: 2021-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord