module HasMeta::InstanceMethods

Public Instance Methods

add_to_pending_save(args) click to toggle source
# File lib/has_meta/instance_methods.rb, line 21
def add_to_pending_save args
  self.meta_attributes_pending_save ||= {}
  self.meta_attributes_pending_save.merge!(args)
end
list_meta_keys() click to toggle source

TODO: Test these

# File lib/has_meta/instance_methods.rb, line 41
def list_meta_keys
  self.meta_data.pluck(:keys).uniq
end
meta_destroy(key) click to toggle source
# File lib/has_meta/instance_methods.rb, line 36
def meta_destroy key
  self.meta_data.where(key: key).destroy_all
end
meta_get(key) click to toggle source
# File lib/has_meta/instance_methods.rb, line 4
def meta_get key
  return self.meta_attributes_pending_save[key][:value] if self.meta_attributes_pending_save.try(:[], key).present?

  self.meta_data.where(key: key.to_s).try(:first).try(:value)
end
meta_set(key, value, options={}) click to toggle source
# File lib/has_meta/instance_methods.rb, line 10
def meta_set key, value, options={}
  return meta_destroy key if value.nil? or value == ''
  if self.persisted?
    meta = self.meta_data.where(key: key.to_s).first_or_create
    meta.send :value=, value, options
    meta
  else
    add_to_pending_save key => {value: value, options: options}
  end
end
meta_set!(key, value, options={}) click to toggle source
# File lib/has_meta/instance_methods.rb, line 31
def meta_set! key, value, options={}
  result = meta_set(key, value, options)
  result.respond_to?(:save) ? result.save : result
end
remove_meta(key) click to toggle source
# File lib/has_meta/instance_methods.rb, line 45
def remove_meta(key)
  self.send(key.to_sym, nil)
end
save_pending_meta_attributes() click to toggle source
# File lib/has_meta/instance_methods.rb, line 26
def save_pending_meta_attributes
  self.meta_attributes_pending_save.each { |key, v| meta_set! key, v[:value], v[:options] }
  self.meta_attributes_pending_save.clear
end