djezzzl / database_consistency

The tool to avoid various issues due to inconsistencies and inefficiencies between a database schema and application models.
MIT License
1.02k stars 43 forks source link

Error on on length check #225

Open Nerian opened 3 months ago

Nerian commented 3 months ago

Hi,

I have this code:

validates :value, length: {
    maximum: proc { |r| r.character_limit },
    if: -> { assessment_type&.comment? }
  }, on: [:validate_result, :create, :update]

When I run bundle exec database_consistency I get the following error:

<===begin===>
Metadata:
model: AssessmentTypeResult
column: value
checker: DatabaseConsistency::Checkers::LengthConstraintChecker
Stack trace:
/Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/checkers/column_checkers/length_constraint_checker.rb:49:in `public_send': undefined method `<' for #<Proc:0x000000010f2543f0 /Users/Nerian/satchel/show-app/backend/smhw-api/app/models/assessment_type_result.rb:62> (NoMethodError)

          return validator.options[option].public_send(sign, column.limit) if validator.options[option]
                                          ^^^^^^^^^^^^
Did you mean?  <<
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/checkers/column_checkers/length_constraint_checker.rb:49:in `block in valid?'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/checkers/column_checkers/length_constraint_checker.rb:48:in `each'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/checkers/column_checkers/length_constraint_checker.rb:48:in `valid?'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/checkers/column_checkers/length_constraint_checker.rb:40:in `check'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/checkers/base_checker.rb:25:in `report'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/checkers/base_checker.rb:34:in `report_if_enabled?'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/processors/columns_processor.rb:29:in `block (6 levels) in check'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/debug_context.rb:20:in `with'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/debug_context.rb:8:in `with'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/processors/columns_processor.rb:27:in `block (5 levels) in check'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/processors/columns_processor.rb:26:in `each'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/processors/columns_processor.rb:26:in `flat_map'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/processors/columns_processor.rb:26:in `block (4 levels) in check'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/debug_context.rb:20:in `with'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/debug_context.rb:8:in `with'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/processors/columns_processor.rb:25:in `block (3 levels) in check'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/processors/columns_processor.rb:24:in `each'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/processors/columns_processor.rb:24:in `flat_map'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/processors/columns_processor.rb:24:in `block (2 levels) in check'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/debug_context.rb:20:in `with'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/debug_context.rb:8:in `with'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/processors/columns_processor.rb:20:in `block in check'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/processors/columns_processor.rb:19:in `each'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/processors/columns_processor.rb:19:in `flat_map'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/processors/columns_processor.rb:19:in `check'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/processors/base_processor.rb:31:in `reports'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/processors/base_processor.rb:16:in `block in reports'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/processors/base_processor.rb:15:in `each'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/processors/base_processor.rb:15:in `flat_map'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency/processors/base_processor.rb:15:in `reports'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/lib/database_consistency.rb:112:in `run'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/gems/database_consistency-1.7.23/bin/database_consistency:78:in `<top (required)>'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/bin/database_consistency:25:in `load'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/bin/database_consistency:25:in `<main>'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/bin/ruby_executable_hooks:22:in `eval'
    from /Users/Nerian/.rvm/gems/ruby-3.2.3/bin/ruby_executable_hooks:22:in `<main>'
<===end===>