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

Version Path
datts_right-0.0.32 lib/datts_right/dynamic_attribute.rb
datts_right-0.0.31 lib/datts_right/dynamic_attribute.rb
datts_right-0.0.30 lib/datts_right/dynamic_attribute.rb
datts_right-0.0.29 lib/datts_right/dynamic_attribute.rb
datts_right-0.0.28 lib/datts_right/dynamic_attribute.rb
datts_right-0.0.27 lib/datts_right/dynamic_attribute.rb
datts_right-0.0.26 lib/datts_right/dynamic_attribute.rb
datts_right-0.0.25 lib/datts_right/dynamic_attribute.rb
datts_right-0.0.24 lib/datts_right/dynamic_attribute.rb
datts_right-0.0.23 lib/datts_right/dynamic_attribute.rb
datts_right-0.0.22 lib/datts_right/dynamic_attribute.rb
datts_right-0.0.21 lib/datts_right/dynamic_attribute.rb
datts_right-0.0.20 lib/datts_right/dynamic_attribute.rb
datts_right-0.0.19 lib/datts_right/dynamic_attribute.rb
datts_right-0.0.18 lib/datts_right/dynamic_attribute.rb
datts_right-0.0.17 lib/datts_right/dynamic_attribute.rb
datts_right-0.0.16 lib/datts_right/dynamic_attribute.rb