module Faceted::Collector

Public Class Methods

included(base) click to toggle source
# File lib/faceted/collector.rb, line 7
def self.included(base)
  base.extend ActiveModel::Naming
  base.send(:attr_accessor, :errors)
  base.send(:attr_accessor, :success)
  base.send(:attr_accessor, :fields)
  base.extend ClassMethods
  base.extend Faceted::Model::ModelClassMethods
end
new(args={}) click to toggle source

Instance methods =========================================================

# File lib/faceted/collector.rb, line 48
def initialize(args={})
  ! args.empty? && args.symbolize_keys.delete_if{|k,v| v.nil?}.each do |k,v|
    self.send("#{k}=", v) if self.respond_to?("#{k}=") && ! v.blank?
  end
  self.errors = []
  self.success = true
end

Public Instance Methods

to_hash() click to toggle source
# File lib/faceted/collector.rb, line 56
def to_hash
  self.class.fields.inject({}){ |h,f| h[f] = self.send(f).map{|o| o.to_hash}; h }
end

Private Instance Methods

objects(klass) click to toggle source
# File lib/faceted/collector.rb, line 62
def objects(klass)
  return [] unless self.class.collected_classes
  return [] unless self.class.collected_classes.keys.include?(klass)
  self.class.collected_classes[klass].where(self.send("#{klass.to_s}_finder"))
end