module JsonColumn

Constants

VERSION

Public Instance Methods

define_accessor(col, cache_name, schema) click to toggle source
# File lib/json_column/acts_as_json_column.rb, line 32
def define_accessor(col, cache_name, schema)
  define_method(col) do
    if self.send(cache_name)
      self.send(cache_name)
    else
      if schema["type"] == "array"
        klass = JsonColumnArray
      else
        klass = JsonColumnObject
      end

      if read_attribute(col)
        column = klass[read_attribute(col)]
      else
        column = klass.new
      end

      column._schema = schema
      self.send("#{cache_name}=", column)
      column
    end
  end

  define_method("#{col}=") do |value|
    if schema["type"] == "array"
      obj = JsonColumnArray
    else
      obj = JsonColumnObject
    end
      column = obj[value]
      column._schema = schema
      self.send("#{cache_name}=", column)
  end
end