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
|