Sha256: 2afc5b5a577a6e0e978cad3267ed0ee42a483fd098881bc73f8832dae523b4d7

Contents?: true

Size: 712 Bytes

Versions: 2

Compression:

Stored size: 712 Bytes

Contents

module Microscope
  class InstanceMethod
    class DateInstanceMethod < InstanceMethod
      def apply
        cropped_field = field.name.gsub(/_on$/, '')
        infinitive_verb = self.class.past_participle_to_infinitive(cropped_field)

        model.class_eval <<-RUBY, __FILE__, __LINE__ + 1
          define_method "#{cropped_field}?" do
            value = send("#{field.name}")
            !value.nil? && value <= Date.today
          end

          define_method "not_#{cropped_field}?" do
            !#{cropped_field}?
          end

          define_method "#{infinitive_verb}!" do
            send("#{field.name}=", Date.today)
            save!
          end
        RUBY
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
microscope-0.5.2 lib/microscope/instance_method/date_instance_method.rb
microscope-0.5.1 lib/microscope/instance_method/date_instance_method.rb