Sha256: b8db175f6eff7e24d3915dd753a42396500660017f6a15f8e848ad53cc7ddfa1

Contents?: true

Size: 702 Bytes

Versions: 1

Compression:

Stored size: 702 Bytes

Contents

module MetaManager
  module Model
    extend ::ActiveSupport::Concern

    included do
      validates_presence_of :name, :taggable_type
      validates_uniqueness_of :name, scope: %i[taggable_type taggable_id is_dynamic]
      validates :content, length: { maximum: 4000 }
    end

    def get_content(controller = nil)
      is_dynamic ? dynamic_content(controller) : content
    end

    def dynamic_content(controller)
      content.gsub /%{([\w\.]+)}/ do
        items = $1.split('.')
        instance_name = items.shift
        method_name = items.join('.')
        record = controller.instance_variable_get("@#{instance_name}")

        record.try(:"#{method_name}")
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
meta_manager-0.3.0 lib/meta_manager/model.rb