# == Schema Information # # Table name: activities # # id :integer(4) not null, primary key # item_id :integer(4) # item_type :string(255) # template :string(255) # source_id :integer(4) # source_type :string(255) # content :text # title :string(255) # status_update :boolean(1) # created_at :datetime # updated_at :datetime # class Activity < ActiveRecord::Base unloadable belongs_to :item, :polymorphic => true belongs_to :source, :polymorphic => true has_many :activity_feeds acts_as_commentable validates_presence_of :source named_scope :since, lambda { |time| {:conditions => ["activities.created_at > ?", time] } } named_scope :before, lambda {|time| {:conditions => ["activities.created_at < ?", time] } } named_scope :recent, :order => "activities.created_at DESC" named_scope :after, lambda {|id| {:conditions => ["activities.id > ?", id] } } named_scope :only_public, :conditions => ["activities.is_public = true"] named_scope :filter_by_template, lambda { |template| { :conditions => ["activities.template = ?", template] } unless template.blank? } def validate errors.add_to_base(I18n.t('muck.activities.template_or_item_required')) if template.blank? && item.blank? end # Provides a template that can be used to render a view of this activity. # If 'template' is not specified when the object created then the item class # name will be used to generated a template def partial template || item.class.name.underscore end def has_comments? @has_comments ||= !self.comments.blank? end # Checks to see if the specified object can edit this activity. # Most likely check_object will be a user def can_edit?(check_object) if check_object.is_a?(User) return true if check(check_object, :source_id) else source == check_object end false end end