Sha256: 6d9659a9881f3bb21147607291135684794b63d1769eecc6eafcd8ae643a8a5d

Contents?: true

Size: 594 Bytes

Versions: 16

Compression:

Stored size: 594 Bytes

Contents

require 'sequel'

=begin
This validates that strings going into varchar fields display meaningful
warnings instead of incomprenensible native RDBMS errors.
=end

class Sequel::Model
  def self.varchar_columns
    @varchar_columns ||= columns.select do |col|
      db_type = db_schema[col][:db_type]
      db_type =~ /var/ && db_type =~ /char/
    end
  end

  def validate
    super
    self.class.varchar_columns.each do |column|
      limit = self.class.meta[column].limit
      errors.add( column, "is longer than #{limit}" ) if self[column] && self[column].length > limit
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
clevic-0.14.6 lib/clevic/sequel_length_validation.rb
clevic-0.14.5 lib/clevic/sequel_length_validation.rb
clevic-0.14.4 lib/clevic/sequel_length_validation.rb
clevic-0.14.3 lib/clevic/sequel_length_validation.rb
clevic-0.14.2 lib/clevic/sequel_length_validation.rb
clevic-0.14.1 lib/clevic/sequel_length_validation.rb
clevic-0.14.0 lib/clevic/sequel_length_validation.rb
clevic-0.13.0.b12 lib/clevic/sequel_length_validation.rb
clevic-0.13.0.b11 lib/clevic/sequel_length_validation.rb
clevic-0.13.0.b10 lib/clevic/sequel_length_validation.rb
clevic-0.13.0.b9 lib/clevic/sequel_length_validation.rb
clevic-0.13.0.b6 lib/clevic/sequel_length_validation.rb
clevic-0.13.0.b5 lib/clevic/sequel_length_validation.rb
clevic-0.13.0.b3 lib/clevic/sequel_length_validation.rb
clevic-0.13.0.b2 lib/clevic/sequel_length_validation.rb
clevic-0.13.0.b1 lib/clevic/sequel_length_validation.rb