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