module PageParts::Extension

Public Instance Methods

find_or_build_page_part(attr_name) click to toggle source

Find page part by key or build new record

# File lib/page_parts/extension.rb, line 44
def find_or_build_page_part(attr_name)
  key = normalize_page_part_key(attr_name)
  page_parts.detect { |record| record.key.to_s == key } || page_parts.build(key: key)
end
reload(*args) click to toggle source
Calls superclass method
# File lib/page_parts/extension.rb, line 49
def reload(*args)
  @cached_page_parts = nil
  super(*args)
end

Protected Instance Methods

_page_part(attr_name) click to toggle source

Save page parts records into one hash

# File lib/page_parts/extension.rb, line 57
def _page_part(attr_name)
  key = normalize_page_part_key(attr_name)
  @cached_page_parts ||= {}
  @cached_page_parts[key] ||= find_or_build_page_part(key)
end
normalize_page_part_key(value) click to toggle source
# File lib/page_parts/extension.rb, line 63
def normalize_page_part_key(value)
  key = value.to_s.downcase.strip

  unless page_parts_definitions[:keys].include?(key)
    raise NoMethodError, "Page part #{key} not registered"
  end

  key
end