Sha256: 09ccee68b94b3751c9bca0b9bb681830fb07c9acbc69ea31eec61961776d98b9
Contents?: true
Size: 1.41 KB
Versions: 2
Compression:
Stored size: 1.41 KB
Contents
require "rubygems" require "active_record" module ValidatesLengthsFromDatabase def self.included(base) base.send(:extend, ClassMethods) base.send(:include, InstanceMethods) end module ClassMethods def validates_lengths_from_database(options = {}) return unless self.table_exists? #return if table does not exist. Happens in test env during migration options.symbolize_keys! raise ArgumentError, "The :only option to validates_lengths_from_database must be an array." if options[:only] and !options[:only].is_a?(Array) raise ArgumentError, "The :except option to validates_lengths_from_database must be an array." if options[:except] and !options[:except].is_a?(Array) if options[:only] columns_to_validate = options[:only].map(&:to_s) else columns_to_validate = column_names.map(&:to_s) columns_to_validate -= options[:except].map(&:to_s) if options[:except] end columns_to_validate.each do |column| column_schema = columns.find {|c| c.name == column } next if column_schema.nil? next if ![:string, :text].include?(column_schema.type) next if column_schema.limit.nil? class_eval do validates_length_of column, :maximum => column_schema.limit, :allow_blank => true end end nil end end module InstanceMethods end end require "validates_lengths_from_database/railtie"
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
validates_lengths_from_database_tmp-0.1.3 | lib/validates_lengths_from_database.rb |
validates_lengths_from_database_tmp-0.1.2 | lib/validates_lengths_from_database.rb |