module Facetious::BaseClassMethods

These methods are made available on all ActiveRecord classes:

Public Instance Methods

facet(*args) click to toggle source
# File lib/facetious.rb, line 96
def facet *args
  respond_to?(:facets) or extend FacetedClassMethods

  facet_name = args.first.is_a?(Hash) ? args[-1][:name] : args.shift
  unless facet_name
    raise "Usage: facet :field_name, :title => 'Field Name', :data_type => :string (etc), :where => 'SQL'"
  end

  field_name = (args.first.is_a?(Hash) ? args[-1][:field_name] : args.shift) || facet_name
  title = (args.first.is_a?(Hash) ? args[-1][:title] : args.shift) || facet_name
  data_type = (args.first.is_a?(Hash) ? args[-1][:data_type] : args.shift) || :string
  where = args.first.is_a?(Hash) ? args[-1][:where] : args.shift
  f = self.facets[facet_name] = Facet.new(facet_name, field_name, title, data_type, where)
end