module ActiveHash::Enum::Methods
Public Instance Methods
delete_all()
click to toggle source
Calls superclass method
# File lib/enum/enum.rb, line 22 def delete_all if @enum_accessors.present? @records.each do |record| constant = constant_for(record, @enum_accessors) remove_const(constant) if const_defined?(constant, false) end end super end
enum_accessor(*field_names)
click to toggle source
# File lib/enum/enum.rb, line 12 def enum_accessor(*field_names) @enum_accessors = field_names reload end
insert(record)
click to toggle source
Calls superclass method
# File lib/enum/enum.rb, line 17 def insert(record) super set_constant(record) if defined?(@enum_accessors) end
Private Instance Methods
constant_for(record, field_names)
click to toggle source
# File lib/enum/enum.rb, line 45 def constant_for(record, field_names) field_value = field_names.map { |name| record.attributes[name] }.join("_") if constant = !field_value.nil? && field_value.dup constant.gsub!(/\W+/, "_") constant.gsub!(/^_|_$/, '') constant.upcase! constant end end
set_constant(record)
click to toggle source
# File lib/enum/enum.rb, line 32 def set_constant(record) constant = constant_for(record, @enum_accessors) return nil if constant.blank? unless const_defined?(constant, false) const_set(constant, record) else raise DuplicateEnumAccessor, "#{constant} already defined for #{self.class}" unless const_get(constant, false) == record end end