OSDN Git Service

Improve user block logic
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Tue, 27 Aug 2013 09:01:45 +0000 (12:01 +0300)
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Tue, 27 Aug 2013 09:01:45 +0000 (12:01 +0300)
When block user - remove it from joined groups
Dont remove user from own resources (groups, users)

app/models/user.rb

index 071f6f3..e2c1580 100644 (file)
@@ -126,6 +126,17 @@ class User < ActiveRecord::Base
     after_transition any => :blocked do |user, transition|
       # Remove user from all projects and
       user.users_projects.find_each do |membership|
+        # skip owned resources
+        next if membership.project.owner == user
+
+        return false unless membership.destroy
+      end
+
+      # Remove user from all groups
+      user.users_groups.find_each do |membership|
+        # skip owned resources
+        next if membership.group.owner == user
+
         return false unless membership.destroy
       end
     end