Observe issue, merge request, note creation - create event

This commit is contained in:
Dmitriy Zaporozhets 2012-02-28 16:01:14 +02:00
parent a847501fd2
commit dcdb2fdfdb
12 changed files with 130 additions and 25 deletions

View file

@ -0,0 +1,12 @@
class ActivityObserver < ActiveRecord::Observer
observe :issue, :merge_request, :note
def after_create(record)
Event.create(
:project => record.project,
:target_id => record.id,
:target_type => record.class.name,
:action => Event.determine_action(record)
)
end
end

View file

@ -1,17 +1,36 @@
class Event < ActiveRecord::Base
Created = 1
Updated = 2
Closed = 3
Reopened = 4
Pushed = 5
Commented = 6
belongs_to :project
belongs_to :target, :polymorphic => true
serialize :data
def self.determine_action(record)
if [Issue, MergeRequest].include? record.class
Event::Created
elsif record.kind_of? Note
Event::Commented
end
end
end
# == Schema Information
#
# Table name: events
#
# id :integer not null, primary key
# data_type :string(255)
# data_id :string(255)
# title :string(255)
# data :text
# project_id :integer
# created_at :datetime not null
# updated_at :datetime not null
# id :integer not null, primary key
# target_type :string(255)
# target_id :integer
# title :string(255)
# data :text
# project_id :integer
# created_at :datetime not null
# updated_at :datetime not null
# action :integer
#

View file

@ -3,6 +3,7 @@ require "grit"
class Project < ActiveRecord::Base
belongs_to :owner, :class_name => "User"
has_many :events, :dependent => :destroy
has_many :merge_requests, :dependent => :destroy
has_many :issues, :dependent => :destroy, :order => "position"
has_many :users_projects, :dependent => :destroy

View file

@ -44,3 +44,4 @@ end
# slug :string(255)
# user_id :integer
#