module HasMeta

Constants

VERSION

Public Instance Methods

has_meta(*attributes) click to toggle source
# File lib/has-meta.rb, line 28
def has_meta(*attributes)
  options = attributes.pop if attributes.last.is_a? Hash
  attributes = attributes.to_a.flatten.compact.map(&:to_sym)

  if self.meta_attributes.present? 
    self.meta_attributes += attributes
  else
    class_attribute :meta_attributes, instance_predicate: false, instance_writer: false
    self.meta_attributes = attributes
  end

  class_eval do
    has_many :meta_data, as: :meta_model, dependent: :destroy, class_name: '::HasMeta::MetaData'
    attr_accessor :meta_attributes_pending_save
    after_save :save_pending_meta_attributes, 
      if: ->(x) { x.persisted? and x.meta_attributes_pending_save.present? }
    include HasMeta::InstanceMethods
    include HasMeta::DynamicMethods
    include HasMeta::QueryMethods
  end
end
meta_attributes() click to toggle source
# File lib/has-meta.rb, line 24
def meta_attributes
  nil
end