Class: Woods::Console::ModelValidator
- Inherits:
-
Object
- Object
- Woods::Console::ModelValidator
- Defined in:
- lib/woods/console/model_validator.rb
Overview
Validates model names and column names against the Rails schema.
In production, validates against AR::Base.descendants and model.column_names. Accepts an injectable registry for testing without Rails.
Instance Method Summary collapse
-
#columns_for(model_name) ⇒ Array<String>
List columns for a model.
-
#initialize(registry:) ⇒ ModelValidator
constructor
A new instance of ModelValidator.
-
#model_names ⇒ Array<String>
List all known model names.
-
#validate_column!(model_name, column_name) ⇒ true
Validate that a column exists on a model.
-
#validate_columns!(model_name, column_names) ⇒ Object
Validate multiple columns at once.
-
#validate_model!(model_name) ⇒ true
Validate that a model name is known.
Constructor Details
#initialize(registry:) ⇒ ModelValidator
Returns a new instance of ModelValidator.
23 24 25 |
# File 'lib/woods/console/model_validator.rb', line 23 def initialize(registry:) @registry = registry end |
Instance Method Details
#columns_for(model_name) ⇒ Array<String>
List columns for a model.
73 74 75 76 |
# File 'lib/woods/console/model_validator.rb', line 73 def columns_for(model_name) validate_model!(model_name) @registry[model_name].sort end |
#model_names ⇒ Array<String>
List all known model names.
65 66 67 |
# File 'lib/woods/console/model_validator.rb', line 65 def model_names @registry.keys.sort end |
#validate_column!(model_name, column_name) ⇒ true
Validate that a column exists on a model.
44 45 46 47 48 49 50 51 |
# File 'lib/woods/console/model_validator.rb', line 44 def validate_column!(model_name, column_name) validate_model!(model_name) columns = @registry[model_name] return true if columns.include?(column_name) raise ValidationError, "Unknown column '#{column_name}' on #{model_name}. Available: #{columns.sort.join(', ')}" end |
#validate_columns!(model_name, column_names) ⇒ Object
Validate multiple columns at once.
58 59 60 |
# File 'lib/woods/console/model_validator.rb', line 58 def validate_columns!(model_name, column_names) column_names.each { |col| validate_column!(model_name, col) } end |
#validate_model!(model_name) ⇒ true
Validate that a model name is known.
32 33 34 35 36 |
# File 'lib/woods/console/model_validator.rb', line 32 def validate_model!(model_name) return true if @registry.key?(model_name) raise ValidationError, "Unknown model: #{model_name}. Available: #{@registry.keys.sort.join(', ')}" end |