module Storext::InstanceMethods

Public Instance Methods

_dump(level) click to toggle source
# File lib/storext/instance_methods.rb, line 33
def _dump(level)
  self.to_yaml
end
destroy_key(column, attr) click to toggle source
# File lib/storext/instance_methods.rb, line 4
def destroy_key(column, attr)
  new_value = send(column)
  if Rails.gem_version < Gem::Version.new("4.2.0")
    new_value = send(column).dup
  end
  new_value.delete(attr.to_s)
  storext_cast_proxy.reset_attribute(attr)

  send("#{column}=", new_value)
end
destroy_keys(column, *attrs) click to toggle source
# File lib/storext/instance_methods.rb, line 15
def destroy_keys(column, *attrs)
  new_value = send(column)
  if Rails.gem_version < Gem::Version.new("4.2.0")
    new_value = send(column).dup
  end

  attrs.each do |a|
    new_value.delete(a.to_s)
    storext_cast_proxy.reset_attribute(a)
  end

  send("#{column}=", new_value)
end
storext_has_key?(column, key) click to toggle source
# File lib/storext/instance_methods.rb, line 29
def storext_has_key?(column, key)
  send(column).with_indifferent_access.has_key?(key)
end

Private Instance Methods

default_store_value(attr) click to toggle source
# File lib/storext/instance_methods.rb, line 57
def default_store_value(attr)
  storext_cast_proxy.send(attr)
end
set_storext_default_for(column, attr) click to toggle source
# File lib/storext/instance_methods.rb, line 50
def set_storext_default_for(column, attr)
  return unless self.respond_to?(column)
  if self.send(column).nil? || !self.send(column).has_key?(attr.to_s)
    write_store_attribute(column, attr, default_store_value(attr))
  end
end
set_storext_defaults() click to toggle source
# File lib/storext/instance_methods.rb, line 39
def set_storext_defaults
  self.class.storext_options.each do |column, default|
    next unless self.respond_to?(column)
    self.send("#{column}=", default) if self.send(column).nil?
  end

  storext_definitions.each do |attr, definition|
    set_storext_default_for(definition[:column], attr)
  end
end
storext_cast_proxy() click to toggle source
# File lib/storext/instance_methods.rb, line 61
def storext_cast_proxy
  @storext_cast_proxy ||= self.class.storext_proxy_class.new(source: self)
end