<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,3 +1,3 @@
-raise &quot;Rails version must be 2.0 or greater to use validates_timeliness plugin&quot; if Rails::VERSION::MAJOR &lt; 2 
+raise &quot;Rails version must be 2.0 or greater to use validates_timeliness plugin&quot; if Rails::VERSION::MAJOR &lt; 2
 
 require 'validates_timeliness'</diff>
      <filename>init.rb</filename>
    </modified>
    <modified>
      <diff>@@ -17,11 +17,17 @@ module ValidatesTimeliness
         validates_each(attr_names, configuration) do |record, attr_name, value|
           raw_value = record.send(&quot;#{attr_name}_before_type_cast&quot;) || value
           
-          next if raw_value.is_nil? and options[:allow_nil]
+          if raw_value.nil?
+            record.errors.add(attr_name, &quot;cant' be blank&quot;) unless configuration[:allow_nil]
+            next
+          end
           
+          column = record.column_for_attribute(attr_name)
           begin
-            if raw_value.acts_like?(:time)
-              time = raw_value
+            time = if raw_value.acts_like?(:time)
+              raw_value
+            elsif raw_value.is_a?(Date)
+              raw_value.to_time
             else
               time_array = ParseDate.parsedate(raw_value)            
 
@@ -29,18 +35,30 @@ module ValidatesTimeliness
               date = Date.new(*time_array[0..2])
               
               # checks if time is valid as it will accept bad date values
-              time = Time.mktime(*time_array)
+              Time.mktime(*time_array)
             end
             
             restriction_methods.each do |option, method|
-              if restriction = options[option]
-                restriction = restriction.to_time
-                record.errors.add(attr_name, &quot;must be #{humanize(option)} #{restriction}&quot;) unless time.send(method, restriction)
+              if restriction = configuration[option]
+                compare = case restriction
+                  when Time, Date, DateTime
+                    restriction.to_time
+                  when Symbol
+                    record.send(restriction).to_time
+                  when Proc
+                    restriction.call(record)
+                end
+                
+                begin                  
+                  record.errors.add(attr_name, &quot;must be #{option.to_s.humanize.downcase} #{compare}&quot;) unless time.send(method, compare)
+                rescue
+                  record.errors.add(attr_name, &quot;restriction '#{option}' value was invalid&quot;)
+                end
               end
             end
           rescue
-            record.send(attr_name + &quot;=&quot;, nil)
-            record.errors.add(attr_name, &quot;is not a valid time&quot;)
+            record.send(&quot;#{attr_name}=&quot;, nil)
+            record.errors.add(attr_name, &quot;is not a valid #{column.type}&quot;)
             next
           end      
           </diff>
      <filename>lib/validates_timeliness/validations.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,3 @@
 class Person &lt; ActiveRecord::Base
-
+  set_table_name 'people'
 end</diff>
      <filename>spec/resources/person.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>8751eddac69d6c37c081ebca31dcba666e0f6a39</id>
    </parent>
  </parents>
  <author>
    <name>Adam Meehan</name>
    <email>adam.meehan@gmail.com</email>
  </author>
  <url>http://github.com/adzap/validates_timeliness/commit/cae3d8cb84d2a0d225b146495ad25c6a1d59ca1f</url>
  <id>cae3d8cb84d2a0d225b146495ad25c6a1d59ca1f</id>
  <committed-date>2008-05-02T22:52:40-07:00</committed-date>
  <authored-date>2008-05-02T22:52:40-07:00</authored-date>
  <message>added specs for validation</message>
  <tree>8d64f055e75c736d04d901f71d9ccc4fc4ae647a</tree>
  <committer>
    <name>Adam Meehan</name>
    <email>adam.meehan@gmail.com</email>
  </committer>
</commit>
