20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/price_log.rb', line 20
def has_price_log(name, options = {})
configuration = {
name: name,
dependent: :destroy
}
configuration.update(options) if options.is_a?(Hash)
_field_name_ = configuration[:name]
_relation_name_ = "all_#{_field_name_}_price_logs".to_sym
has_many _relation_name_, -> (object){ where("priceable_field_name = ?", _field_name_.to_sym)}, {as: :priceable, dependent: :destroy, class_name: "PriceLogEntry", validate:false}
class_eval %{
def #{_field_name_}(date=nil)
self.#{_relation_name_}.for_date(self.class.name, self.id, '#{_field_name_}', date).first
end
def #{_field_name_}=(amount)
ple = PriceLogEntry.new(priceable: self, price: amount, start_date: DateTime.now, priceable_field_name: '#{_field_name_}')
self.#{_relation_name_} << ple
end
def #{_field_name_}_dump
self.#{_relation_name_}.each(&:pretty_print)
end
}
end
|