Module: ActiveRecord::As::Bool::ClassMethods

Defined in:
lib/date_as_bool/active_record/as/bool.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#date_as_bool(datetime_name, bool_name = nil) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/date_as_bool/active_record/as/bool.rb', line 5

def date_as_bool(datetime_name, bool_name = nil)
  bool_name ||= datetime_name.to_s.split('_')[0..-2].join('_').to_sym

  singleton_class.class_eval do
    define_method bool_name do
      where.not(datetime_name => nil)
    end
    define_method "not_#{bool_name}" do
      where(datetime_name => nil)
    end
  end

  class_eval do
    define_method bool_name do
      send(datetime_name).present?
    end
    define_method :"#{bool_name}?" do
      send(bool_name)
    end
    define_method :"#{bool_name}=" do |bool|
      send(:"#{datetime_name}=", bool ? Time.now : nil)
    end
    define_method :"#{bool_name}!" do
      send(:"#{bool_name}=", true)
      save!
    end
  end
end