Class: ChronicParsableValidator

Inherits:
ActiveModel::EachValidator
  • Object
show all
Defined in:
lib/smarter_dates/chronic_parsable_validator.rb

Overview

validates attributes are parsable by the chronic gem

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ ChronicParsableValidator

Creation

To use this Validator, initialize it as any other validator

class ExampleValidator < ActiveRecord::Base
  validates :attr1, :chronic_parsable => true
end


11
12
13
14
# File 'lib/smarter_dates/chronic_parsable_validator.rb', line 11

def initialize(*args) # :nodoc:
  @errors = []
  super(*args)
end

Instance Method Details

#is_valid?Boolean

:call-seq: is_valid?

alias for :is_valid_datetime?

Returns:

  • (Boolean)


35
36
37
# File 'lib/smarter_dates/chronic_parsable_validator.rb', line 35

def is_valid?
  is_valid_datetime?
end

#is_valid_datetime?Boolean

:call-seq: is_valid_datetime?

returns true if the string is parsable by chronic

Returns:

  • (Boolean)


44
45
46
47
48
# File 'lib/smarter_dates/chronic_parsable_validator.rb', line 44

def is_valid_datetime?
  obj = Chronic.parse(@value.respond_to?(:to_date) ?
    @value.to_date : @value.to_s)
  !obj.nil?
end

#validate_each(record, attribute, value = "") ⇒ Object

:call-seq: validate_each :record, :attribute, :value

:record

AR instance

:attribute

symbol for attribute

:value

value to check validity



23
24
25
26
27
28
# File 'lib/smarter_dates/chronic_parsable_validator.rb', line 23

def validate_each(record, attribute, value = "") #:nodoc:
  @value = value
  unless is_valid?
    record.errors[attribute] << 'not a valid Date or DateTime'
  end
end