class Gutentag::TagValidations

Constants

DATABASE_ERROR_CLASSES
DEFAULTS

Attributes

klass[R]

Public Class Methods

call(klass) click to toggle source
# File lib/gutentag/tag_validations.rb, line 22
def self.call(klass)
  new(klass).call
end
new(klass) click to toggle source
# File lib/gutentag/tag_validations.rb, line 26
def initialize(klass)
  @klass = klass
end

Public Instance Methods

call() click to toggle source
# File lib/gutentag/tag_validations.rb, line 30
def call
  klass.validates :name, validation_options.dup
end

Private Instance Methods

add_length_validation?() click to toggle source
# File lib/gutentag/tag_validations.rb, line 38
  def add_length_validation?
    klass.table_exists? && limit.present?
  rescue *DATABASE_ERROR_CLASSES => _error
    warn <<-MESSAGE
  The database is not currently available, and so Gutentag was not able to set
  up tag validations completely (in particular: adding a length limit to match
  database constraints).
    MESSAGE
    false
  end
limit() click to toggle source
# File lib/gutentag/tag_validations.rb, line 49
def limit
  @limit ||= klass.columns_hash["name"].limit
end
validation_options() click to toggle source
# File lib/gutentag/tag_validations.rb, line 53
def validation_options
  return DEFAULTS unless add_length_validation?

  DEFAULTS.merge :length => {:maximum => limit}
end