Module: ActiveEnumeration::ClassMethods
- Defined in:
- lib/active_enumeration.rb
Instance Method Summary collapse
- #has_active_enumeration_for(name, options = {}) ⇒ Object
- #has_active_enumerations_for(name, options = {}) ⇒ Object
Instance Method Details
#has_active_enumeration_for(name, options = {}) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/active_enumeration.rb', line 12 def has_active_enumeration_for(name, = {}) class_name = ([:class_name] || name.to_s.camelize).to_s foreign_key = ([:foreign_key] || "#{name}_id").to_s self.send(:define_method, name) do klass = class_name.constantize klass.find(self.send(foreign_key)) end self.send(:define_method, "#{name}=") do |enum_obj| self.send("#{foreign_key}=", enum_obj.instance_variable_get("@active_enumeration_id")) end end |
#has_active_enumerations_for(name, options = {}) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/active_enumeration.rb', line 26 def has_active_enumerations_for(name, = {}) class_name = ([:class_name] || name.to_s.camelize).to_s foreign_key = ([:foreign_key] || "#{name.to_s.singularize}_ids").to_s self.send(:define_method, name) do klass = class_name.constantize self.send(foreign_key).map { |id| klass.find(id) } end self.send(:define_method, "#{name}=") do |enum_objs| self.send("#{foreign_key}=", enum_objs.map { |obj| obj.instance_variable_get("@active_enumeration_id") }) end end |