Guest User

Untitled

a guest
Jun 23rd, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. # coding: utf-8
  2.  
  3. require_relative "order_item"
  4. require_relative "customer"
  5.  
  6. class PaymentType
  7. include DataMapper::Resource
  8. has n, :orders
  9.  
  10. # NOTE: COD (cash on delivery), "dobirka" in Czech
  11. property :id, Serial
  12. property :name, String
  13. property :shortcut, String, default: lambda { |instance, property| instance.name.downcase }
  14.  
  15. def initialize(*args)
  16. super(*args)
  17. self.include_payment_mixin
  18. end
  19.  
  20. def metaclass
  21. class << self
  22. self
  23. end
  24. end
  25.  
  26. def include_payment_mixin
  27. const_name = self.shortcut.camel_case.to_sym
  28. relative_path = "models/payment_types/#{self.shortcut}.rb"
  29. if File.exist?(File.join(Project.root, relative_path))
  30. Project.import(relative_path)
  31. Project.logger.info("Including module #{const_name} for #{self.inspect}")
  32. self.metaclass.send(:include, PaymentTypes.const_get(const_name))
  33. end
  34. end
  35. end
Add Comment
Please, Sign In to add comment