Module: FeideeUtils::Record::Accessors::ClassMethods
- Included in:
- FeideeUtils::Record
- Defined in:
- lib/feidee_utils/record/accessors.rb
Instance Method Summary collapse
- #define_accessors(field_mappings) ⇒ Object
- #define_entity_accessor(poid_callback_name, target_class_name = nil) ⇒ Object
Instance Method Details
#define_accessors(field_mappings) ⇒ Object
13 14 15 16 17 18 19 20 |
# File 'lib/feidee_utils/record/accessors.rb', line 13 def define_accessors field_mappings field_mappings.each do |name, key| if method_defined? name raise "Accessor #{name} already exists in #{self.name}." end define_method name do column(key) end end end |
#define_entity_accessor(poid_callback_name, target_class_name = nil) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/feidee_utils/record/accessors.rb', line 22 def define_entity_accessor poid_callback_name, target_class_name = nil accessor_name = poid_callback_name.to_s.chomp!("_poid") if accessor_name == nil raise "No trailing 'poid' in callback name #{poid_callback_name}." end if not target_class_name target_class_name = accessor_name end target_class_name = target_class_name.to_s.clone target_class_name.gsub!(/(^|_)(.)/) { $2.upcase } define_method accessor_name do poid = method(poid_callback_name).call self.class.environment.const_get(target_class_name).find_by_id(poid) end end |