Sha256: 66c792257c7b71d963f144902dad8c8d0c239986f08f7f8e84ed3762819b6398

Contents?: true

Size: 685 Bytes

Versions: 3

Compression:

Stored size: 685 Bytes

Contents

class MetaTag < ::ActiveRecord::Base
  belongs_to :taggable, :polymorphic => true
  
  validates_presence_of :name, :taggable_type, :content
  validates_uniqueness_of :name, :scope => [:taggable_type, :taggable_id, :is_dynamic]
  
  attr_accessible :name, :content, :is_dynamic
  
  def get_content(controller=nil)
    self.is_dynamic ? dynamic_content(controller) : self.content
  end
  
  def dynamic_content(controller)
    self.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

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
sunrise-cms-0.5.0.rc1 vendor/bundle/ruby/1.9.1/gems/meta_manager-0.0.8/app/models/meta_tag.rb
meta_manager-0.0.8 app/models/meta_tag.rb
meta_manager-0.0.7 app/models/meta_tag.rb