Sha256: 07e249e5c90b3f9110ad575e74f5a7a3d089b4a2d0c0c7aad74b0a8d4ba905b4
Contents?: true
Size: 1.87 KB
Versions: 3
Compression:
Stored size: 1.87 KB
Contents
# # There are certain gloabl special groups, for example the `everyone` group, which contains # all users. # # The global accessors for these groups, e.g. `Group.find_everyone_group` or # `Group.everyone` for short, are defined in this mixin. # # The mechanism used by this mixin is defined in `StructureableMixins::HasSpecialGroups`. # module GroupMixins::Everyone extend ActiveSupport::Concern included do # see, for example, http://stackoverflow.com/questions/5241527/splitting-a-class-into-multiple-files-in-ruby-on-rails end # Everyone Group # ========================================================================================== # # The 'root group', which is the highest in the group hierarchy. # Everyone is member of this group, even not registered users. # module ClassMethods def find_everyone_group find_special_group(:everyone) end def create_everyone_group create_special_group(:everyone) end def find_or_create_everyone_group find_or_create_special_group(:everyone) end def everyone find_or_create_everyone_group end def everyone! find_everyone_group || raise('special group :everyone does not exist.') end end # Members # ========================================================================================== # This method overrides the default association to emulate the bahaviour that really every # user is member of the :everyone group. # def members(reload = nil) if self.has_flag? :everyone User.where(true) else super(reload) end end # This method overrides the default association to emulate the bahaviour that really every # user is direct member of the :everyone group. # def direct_members(reload = nil) if self.has_flag? :everyone User.where(true) else super(reload) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
your_platform-1.0.1 | app/models/group_mixins/everyone.rb |
your_platform-1.0.0 | app/models/group_mixins/everyone.rb |
your_platform-0.0.2 | app/models/group_mixins/everyone.rb |