Sha256: 77cb6a80884c9342276fb7c96d4dea61a32ab43c2188ce20b5857fba29f46391

Contents?: true

Size: 1.31 KB

Versions: 3

Compression:

Stored size: 1.31 KB

Contents

#
# This mixin adds methods to special groups that are related to the role model.
#
module GroupMixins::Roles

  extend ActiveSupport::Concern

  included do
  end

  # Officers somehow administrate structureable objects, e.g. groups or pages.
  # They may be admins, main_admins, editors or another kind of officer.
  #
  # This method returns the object that is administrated by the officers that are in this
  # group (self) if this is an officer group.
  #
  #     some_group
  #         |------- another_group   <---------------------------- this group is returned
  #                        |-------- officers
  #                                      |---- admins
  #                                               |--- main_admins
  #
  #     main_admins.administrated_object == another_group
  #     admins.administrated_object == another_group
  #     officers.administrated_object == another_group
  #     another_group.administrated_object == nil
  #     some_group.administrated_object == nil
  #
  def administrated_object
    if self.ancestor_groups.find_all_by_flag( :officers_parent ).count == 0 and
        not self.has_flag? :officers_parent
      return nil
    end
    object = self
    until object.has_flag? :officers_parent
      object = object.parents.first
    end
    object = object.parents.first
  end
  
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
your_platform-1.0.1 app/models/group_mixins/roles.rb
your_platform-1.0.0 app/models/group_mixins/roles.rb
your_platform-0.0.2 app/models/group_mixins/roles.rb