Class: Decidim::UserBaseEntity
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Decidim::UserBaseEntity
- Includes:
- Followable, HasUploadValidations, Loggable, Nicknamizable, Resourceable
- Defined in:
- app/models/decidim/user_base_entity.rb
Overview
This class serves as a base class for ‘Decidim::User` and `Decidim::UserGroup` so that we can set some shared logic. This class is not supposed to be used directly.
Constant Summary collapse
- REGEXP_NAME =
Regex for name & nickname format validations
/\A(?!.*[<>?%&\^*#@\(\)\[\]\=\+\:\;\"\{\}\\\|])/.freeze
Instance Method Summary collapse
-
#following ⇒ Object
Public: Returns a collection with all the entities this user is following.
Methods included from HasUploadValidations
#maximum_avatar_size, #maximum_upload_size
Methods included from Followable
Instance Method Details
#following ⇒ Object
Public: Returns a collection with all the entities this user is following.
This can’t be done as with a ‘has_many :following, through: :following_follows` since it’s a polymorphic relation and Rails doesn’t know how to load it. With this implementation we only query the database once for each kind of following.
Returns an Array of Decidim::Followable
35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'app/models/decidim/user_base_entity.rb', line 35 def following @following ||= begin followings = following_follows.pluck(:decidim_followable_type, :decidim_followable_id) grouped_followings = followings.each_with_object({}) do |(type, following_id), all| all[type] ||= [] all[type] << following_id all end grouped_followings.flat_map do |type, ids| type.constantize.where(id: ids) end end end |