Observe issue, merge request, note creation - create event
This commit is contained in:
parent
a847501fd2
commit
dcdb2fdfdb
12 changed files with 130 additions and 25 deletions
12
app/models/activity_observer.rb
Normal file
12
app/models/activity_observer.rb
Normal 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
|
|
@ -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
|
||||
#
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -44,3 +44,4 @@ end
|
|||
# slug :string(255)
|
||||
# user_id :integer
|
||||
#
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue