Sha256: d85f52f40ac20c661f5d24c99a69a5567eedff1601ae2a2d46b484b03f760e4d

Contents?: true

Size: 1.67 KB

Versions: 7

Compression:

Stored size: 1.67 KB

Contents

module ValidatesTimeliness
  module ORM
    module Mongoid
      extend ActiveSupport::Concern
      # You need define the fields before you define the validations.
      # It is best to use the plugin parser to avoid errors on a bad
      # field value in Mongoid. Parser will return nil rather than error.

      module ClassMethods 
        public

        # Mongoid has no bulk attribute method definition hook. It defines
        # them with each field definition. So we likewise define them after
        # each validation is defined.
        #
        def timeliness_validation_for(attr_names, type)
          super
          attr_names.each { |attr_name| define_timeliness_write_method(attr_name) }
        end

        def timeliness_attribute_type(attr_name)
          {
            Date => :date,
            Time => :time,
            DateTime => :datetime
          }[fields[attr_name.to_s].type] || :datetime
        end

        protected

        def timeliness_type_cast_code(attr_name, var_name)
          type = timeliness_attribute_type(attr_name)

          "#{var_name} = Timeliness::Parser.parse(value, :#{type})"
        end

      end

      module Reload
        def reload(*args)
          _clear_timeliness_cache
          super
        end
      end
    end
  end
end
 
module Mongoid::Document
  include ValidatesTimeliness::AttributeMethods
  include ValidatesTimeliness::ORM::Mongoid

  # Pre-2.3 reload
  if (instance_methods & ['reload', :reload]).present?
    def reload_with_timeliness
      _clear_timeliness_cache
      reload_without_timeliness
    end
    alias_method_chain :reload, :timeliness
  else
    include ValidatesTimeliness::ORM::Mongoid::Reload
  end
end

Version data entries

7 entries across 7 versions & 5 rubygems

Version Path
sc_core-0.0.7 test/dummy/vendor/bundle/ruby/2.2.0/gems/validates_timeliness-3.0.14/lib/validates_timeliness/orm/mongoid.rb
ae-validates_timeliness-4.0.0 lib/validates_timeliness/orm/mongoid.rb
sp-validates_timeliness-3.1.3 lib/validates_timeliness/orm/mongoid.rb
sp-validates_timeliness-3.1.2 lib/validates_timeliness/orm/mongoid.rb
jc-validates_timeliness-3.1.1 lib/validates_timeliness/orm/mongoid.rb
jc-validates_timeliness-3.1.0 lib/validates_timeliness/orm/mongoid.rb
validates_timeliness-3.0.14 lib/validates_timeliness/orm/mongoid.rb