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