class Pliable::Ply

Public Class Methods

all() click to toggle source
# File lib/pliable/ply.rb, line 21
def self.all
  if current_scope
    current_scope.clone
  else
    if self.name == "Pliable::Ply"
      scope = relation
    else
      if self.try(:ply_type)
        scope = relation.where(otype: self.try(:ply_type))
      else
        scope = relation
      end
    end
    default_scoped
  end
end
oldest_last_checked_time() click to toggle source
# File lib/pliable/ply.rb, line 17
def self.oldest_last_checked_time
  order('last_checked').first.last_checked
end
ply_name(name) click to toggle source
# File lib/pliable/ply.rb, line 38
def self.ply_name(name)
  define_singleton_method(:ply_type) { name }
end

Public Instance Methods

child_ids() click to toggle source
# File lib/pliable/ply.rb, line 42
def child_ids
  child_relations.map(&:child_id)
end
parent_ids() click to toggle source
# File lib/pliable/ply.rb, line 46
def parent_ids
  parent_relations.map(&:parent_id)
end
to_param() click to toggle source
# File lib/pliable/ply.rb, line 50
def to_param
  oid
end

Private Instance Methods

add_scopes(child_names, parent_names) click to toggle source
# File lib/pliable/ply.rb, line 74
def add_scopes(child_names, parent_names)
  child_names.each do |name|
    define_singleton_method(scrub_for_scope(name)) do
      scrub_to_constant(name).where(otype: name, id: child_ids)
    end
  end

  parent_names.each do |name|
    define_singleton_method(scrub_for_scope(name)) do
      scrub_to_constant(name).where(otype: name, id: parent_ids)
    end
  end
end
define_ply_scopes() click to toggle source
# File lib/pliable/ply.rb, line 66
def define_ply_scopes
  # pluralize is not perfect.  ie. Merchandise__c => merchandises
  child_names  = children.pluck(:child_type).uniq
  parent_names = parents.pluck(:parent_type).uniq

  add_scopes(child_names, parent_names)
end
scrub_for_scope(name) click to toggle source

user initializer to overwrite this method

# File lib/pliable/ply.rb, line 89
def scrub_for_scope(name)
  if respond_to? :added_scrubber
    name = added_scrubber(name)
  end

  TextHelper.pluralize(name.downcase)
end
scrub_to_constant(name) click to toggle source
# File lib/pliable/ply.rb, line 97
def scrub_to_constant(name)
  added_scrubber(name).gsub("_", "").constantize
end
set_ply_attributes() click to toggle source
# File lib/pliable/ply.rb, line 57
def set_ply_attributes
  if data.present?
    data.each do |key,value|
      instance_variable_set(('@' + key.to_s).to_sym, value)
      define_singleton_method(key.to_s) { instance_variable_get(('@' + key.to_s).to_sym) }
    end
  end
end