diff --git a/lib/validates_timeliness.rb b/lib/validates_timeliness.rb index 84c1d1a..8a1bcfc 100644 --- a/lib/validates_timeliness.rb +++ b/lib/validates_timeliness.rb @@ -14,6 +14,10 @@ require 'active_support/core_ext/date_time/zones' module ValidatesTimeliness + # Add validation helpers to these classes + mattr_accessor :extend_classes + @@extend_classes = [] + # Set the dummy date part for a time type values. mattr_accessor :dummy_date_for_time_type @@dummy_date_for_time_type = [ 2000, 1, 1 ] @@ -21,6 +25,12 @@ module ValidatesTimeliness # Ignore errors when restriction options are evaluated mattr_accessor :ignore_restriction_errors @@ignore_restriction_errors = false + + # Setup method for plugin configuration + def self.setup + yield self + extend_classes.each {|klass| klass.send(:include, ValidatesTimeliness::HelperMethods) } + end end require 'validates_timeliness/conversion' diff --git a/lib/validates_timeliness/helper_methods.rb b/lib/validates_timeliness/helper_methods.rb index b1d497a..bea4ed6 100644 --- a/lib/validates_timeliness/helper_methods.rb +++ b/lib/validates_timeliness/helper_methods.rb @@ -1,19 +1,19 @@ module ValidatesTimeliness module HelperMethods - def validates_date(*attr_names) - validates_with Validator, _merge_attributes(attr_names).merge(:type => :date) - end + extend ActiveSupport::Concern - def validates_time(*attr_names) - validates_with Validator, _merge_attributes(attr_names).merge(:type => :time) - end + module ClassMethods + def validates_date(*attr_names) + validates_with Validator, _merge_attributes(attr_names).merge(:type => :date) + end - def validates_datetime(*attr_names) - validates_with Validator, _merge_attributes(attr_names).merge(:type => :datetime) + def validates_time(*attr_names) + validates_with Validator, _merge_attributes(attr_names).merge(:type => :time) + end + + def validates_datetime(*attr_names) + validates_with Validator, _merge_attributes(attr_names).merge(:type => :datetime) + end end end end - -module ActiveModel::Validations::HelperMethods - include ValidatesTimeliness::HelperMethods -end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 5e67043..59ec910 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -6,17 +6,15 @@ require 'rspec/autorun' require 'active_model' require 'active_model/validations' -# require 'active_record' -# require 'action_controller' -# require 'action_view' -# require 'action_mailer' -# require 'rspec/rails' - +require 'active_record' require 'timecop' -require 'model_helpers' require 'validates_timeliness' +ValidatesTimeliness.setup do |c| + c.extend_classes = [ ActiveModel::Validations, ActiveRecord::Base ] +end + Time.zone = 'Australia/Melbourne' LOCALE_PATH = File.expand_path(File.dirname(__FILE__) + '/../lib/validates_timeliness/locale/en.yml') @@ -35,6 +33,8 @@ class Person end end +require 'model_helpers' + Rspec.configure do |c| c.mock_with :rspec c.before do