Module: Templatr::ActsAsTemplatable::ClassMethods

Defined in:
lib/templatr/acts_as_templatable.rb

Instance Method Summary collapse

Instance Method Details

#field_class(constantize = true) ⇒ Object



47
48
49
50
# File 'lib/templatr/acts_as_templatable.rb', line 47

def field_class(constantize = true)
  klass = "#{self}Field"
  constantize ? klass.constantize : klass
end

#search_class(constantize = true) ⇒ Object



57
58
59
60
# File 'lib/templatr/acts_as_templatable.rb', line 57

def search_class(constantize = true)
  klass = "#{self}Search"
  constantize ? klass.constantize : klass
end

#tag_class(constantize = true) ⇒ Object



52
53
54
55
# File 'lib/templatr/acts_as_templatable.rb', line 52

def tag_class(constantize = true)
  klass = "#{self}Tag"
  constantize ? klass.constantize : klass
end

#template_class(constantize = true) ⇒ Object



42
43
44
45
# File 'lib/templatr/acts_as_templatable.rb', line 42

def template_class(constantize = true)
  klass = "#{self}Template"
  constantize ? klass.constantize : klass
end

#update_dynamic_facetsObject



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/templatr/acts_as_templatable.rb', line 62

def update_dynamic_facets
  # Load the dynamic fields
  current_dynamic_facets = []

  field_class.find_each do |field|
    current_dynamic_facets << field.facet_name

    define_method field.facet_name do
      tags.detect {|t| t.field_id == field.id }.try(:value) # Detect instead of SQL constrain so we can eager load the tags association
    end unless field.facet_name.in?(dynamic_facets)

    has_facet field.facet_name, :attribute_type => field.attribute_type, :multiple => field.select_multiple?, :param => field.param
  end

  # Disable all facets that no longer exist
  (dynamic_facets - current_dynamic_facets).each {|facet_name| search_class.disable_facet(facet_name) }

  self.dynamic_facets = current_dynamic_facets
end