Sha256: 240ba95fc082722bde97962d01bd28e25bf931435bdd66793eb9080eaa43b2c1
Contents?: true
Size: 1.75 KB
Versions: 3
Compression:
Stored size: 1.75 KB
Contents
module FlexibleFeeds module ActsAsEventable extend ActiveSupport::Concern module ClassMethods def acts_as_eventable(options = {}) has_one :event, as: :eventable, class_name: "FlexibleFeeds::Event", dependent: :destroy has_many :feeds, through: :event, class_name: "FlexibleFeeds::Feed" after_save :post_to_default_feeds send :include, InstanceMethods cattr_accessor :default_feeds self.default_feeds = options[:add_to_feeds] || :default_custom_feeds cattr_accessor :created_by self.created_by = options[:created_by] if options[:is_parent] === true acts_as_parent elsif options[:is_parent].present? acts_as_parent options[:is_parent] end if options[:is_child] === true acts_as_child elsif options[:is_child].present? acts_as_child options[:is_child] end end end module InstanceMethods def post_to_feeds(*destinations) destinations = destinations[0] if destinations[0].kind_of?(Array) self.class.transaction do create_event_for(destinations) end end def touch_event event.touch end def default_custom_feeds [] end private def creator send(created_by) if created_by.present? end def post_to_default_feeds post_to_feeds(public_send(default_feeds)) end def create_event_for(destinations) event = event || create_event!(creator: creator) destinations.each do |feed| event.event_joins.create!(feed: feed) if feed.present? end end end end end ActiveRecord::Base.send :include, FlexibleFeeds::ActsAsEventable
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
flexible_feeds-0.3.1 | lib/flexible_feeds/acts_as_eventable.rb |
flexible_feeds-0.3.0 | lib/flexible_feeds/acts_as_eventable.rb |
flexible_feeds-0.2.1 | lib/flexible_feeds/acts_as_eventable.rb |