diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2014-06-17 22:51:43 +0300 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2014-06-17 22:51:43 +0300 |
commit | 2d87556847931bd146eddaafdee48c2f8954326c (patch) | |
tree | a46a490d98f4a14e0fec210453d1643e51bdf062 /app/models | |
parent | a90a201d0ee3c9e33cc04075ac8a2509c1d2acc9 (diff) | |
download | gitlab-ce-2d87556847931bd146eddaafdee48c2f8954326c.tar.gz |
Remove rails observers from application
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/users_project.rb | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/app/models/users_project.rb b/app/models/users_project.rb index e8810f56def..6495bed4e61 100644 --- a/app/models/users_project.rb +++ b/app/models/users_project.rb @@ -37,6 +37,10 @@ class UsersProject < ActiveRecord::Base scope :in_projects, ->(projects) { where(project_id: projects.map { |p| p.id }) } scope :with_user, ->(user) { where(user_id: user.id) } + after_create :post_create_hook + after_update :post_update_hook + after_destroy :post_destroy_hook + class << self # Add users to project teams with passed access option @@ -114,4 +118,37 @@ class UsersProject < ActiveRecord::Base def owner? project.owner == user end + + def post_create_hook + Event.create( + project_id: self.project.id, + action: Event::JOINED, + author_id: self.user.id + ) + + notification_service.new_team_member(self) + system_hook_service.execute_hooks_for(self, :create) + end + + def post_update_hook + notification_service.update_team_member(self) if self.project_access_changed? + end + + def post_destroy_hook + Event.create( + project_id: self.project.id, + action: Event::LEFT, + author_id: self.user.id + ) + + system_hook_service.execute_hooks_for(self, :destroy) + end + + def notification_service + NotificationService.new + end + + def system_hook_service + SystemHooksService.new + end end |