Class: Microscope::InstanceMethod::BooleanInstanceMethod

Inherits:
Microscope::InstanceMethod show all
Defined in:
lib/microscope/instance_method/boolean_instance_method.rb

Instance Attribute Summary

Attributes inherited from Microscope::InstanceMethod

#field, #model

Instance Method Summary collapse

Methods inherited from Microscope::InstanceMethod

#cropped_field, #initialize, inject_instance_methods

Constructor Details

This class inherits a constructor from Microscope::InstanceMethod

Instance Method Details

#applyObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/microscope/instance_method/boolean_instance_method.rb', line 4

def apply
  infinitive_verb = Microscope::Utils.past_participle_to_infinitive(field.name)

  model.class_eval <<-RUBY, __FILE__, __LINE__ + 1
    define_method "#{infinitive_verb}!" do
      send("#{field.name}=", true)
      save!
    end

    define_method "not_#{infinitive_verb}!" do
      send("#{field.name}=", false)
      save!
    end
    alias_method 'un#{infinitive_verb}!', 'not_#{infinitive_verb}!'

    define_method "mark_as_#{field.name}" do
      send("#{field.name}=", true)
    end

    define_method "mark_as_not_#{field.name}" do
      send("#{field.name}=", false)
    end
    alias_method 'mark_as_un#{field.name}', 'mark_as_not_#{field.name}'
  RUBY
end