module PageParts::Extension::ClassMethods

Public Instance Methods

page_parts(*args) click to toggle source
PageParts

Enable page parts in your model:

page_parts :main, :left, :sidebar, suffix: [:en, :uk]
# File lib/page_parts/extension.rb, line 22
def page_parts(*args)
  options = { suffix: [nil] }.merge(args.extract_options!)

  args.each do |attr_name|
    Array(options[:suffix]).each do |suffix|
      method_name = [attr_name, suffix].compact.map(&:to_s).join('_')
      page_parts_definitions[:keys] << method_name

      define_method(method_name) do
        _page_part(method_name).try(:content)
      end

      define_method("#{method_name}=") do |value|
        record = _page_part(method_name)
        record.content = value
      end
    end
  end
end