Sha256: 9e11e6dd5fc7f49d3f90b466806f15b66ade3d4bc780a0c45403ea30668d8284
Contents?: true
Size: 1.07 KB
Versions: 17
Compression:
Stored size: 1.07 KB
Contents
class DynamicAttribute < ActiveRecord::Base # TODO # Set table name from configuration belongs_to :attributable, :polymorphic => true belongs_to :dynamic_attribute_definition # Returns the hash that defined this def definer defining_record = attributable.defining_record return {} if defining_record.nil? defining_record.definition[attr_key.to_sym] end def value send("#{object_type}_value") end def value=(v) object_type = self.class.attr_type?(v) if v.nil? send "#{self.object_type}_value=", v elsif object_type == "string" && self.object_type == "text" self.text_value = v else send "#{self.class.attr_column(v)}=", v end end def self.attr_type?(v) object_type = if v.is_a?(Integer) "integer" elsif v.is_a?(Float) "float" elsif v.is_a?(TrueClass) || v.is_a?(FalseClass) "boolean" elsif v.is_a?(String) v.size < 255 ? "string" : "text" end end # Returns what column this kind of data should be in def self.attr_column(v) "#{self.attr_type?(v)}_value" end end
Version data entries
17 entries across 17 versions & 1 rubygems