Sha256: 787184b28144864134fbbc428dbcea036d461afbdea2cd9382ea93fae2bd6435
Contents?: true
Size: 1.69 KB
Versions: 4
Compression:
Stored size: 1.69 KB
Contents
module Remetric class Event include Mongoid::Document include Mongoid::Timestamps include Mongoid::Attributes::Dynamic field :description validates_presence_of :description before_create :attach_trackable_models def story Liquid::Template.parse(description).render(attributes) end def linked_story d = attributes Remetric.config.trackable_models.each do |model, cols| model = model.to_s if self.has_attribute? model key = d[model]["id"] # if Trackable.where(model: model, key: key.to_s).first linked_model_attributes = {} self.send(model).map { |k, v| linked_model_attributes[k] = "<a href=\"#{Engine.routes.url_helpers.trackable_path(model.pluralize, key)}\">#{v}</a>" } d.delete model d[model] = linked_model_attributes # end end end Liquid::Template.parse(description).render(d) end def attach_trackable_models Remetric.config.trackable_models.each do |model, cols| model = model.to_s if self.has_attribute? model args = self.send(model) args = args.attributes if args.class.ancestors.include? ActiveRecord::Base args = args.with_indifferent_access key_field = cols[:key] key_field = :id if key_field.blank? key = args[key_field].to_s.parameterize t = Trackable.where(key: key, model: model).first_or_initialize t.data ||= {} t.data = t.data.merge(args) if t.save self[model] = t.data end end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
remetric-0.0.6 | app/models/remetric/event.rb |
remetric-0.0.5 | app/models/remetric/event.rb |
remetric-0.0.4 | app/models/remetric/event.rb |
remetric-0.0.3 | app/models/remetric/event.rb |