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

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

Instance Method Summary collapse

Instance Method Details

#date_as_bool(datetime_name, bool_name = nil) ⇒ Object



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
# File 'lib/date_as_bool/active_record/as/bool.rb', line 6

def date_as_bool datetime_name, bool_name=nil
  caller_class = self

  if bool_name.nil?
    bool_name = datetime_name.to_s.split("_")[0..-2].join("_").to_sym
  end

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

end