Class: Hyrax::MultipleMembershipChecker
- Inherits:
-
Object
- Object
- Hyrax::MultipleMembershipChecker
- Defined in:
- app/services/hyrax/multiple_membership_checker.rb
Overview
Service class for checking an item’s collection memberships, to make sure that the item is not added to multiple single-membership collections
Instance Attribute Summary collapse
-
#item ⇒ Object
readonly
Returns the value of attribute item.
Instance Method Summary collapse
-
#check(collection_ids:, include_current_members: false) ⇒ nil, String
Scan a list of collection_ids for multiple single-membership collections.
-
#initialize(item:) ⇒ MultipleMembershipChecker
constructor
A new instance of MultipleMembershipChecker.
-
#validate ⇒ True, String
deprecated
Deprecated.
Use #check instead; for removal in 4.0.0
Constructor Details
#initialize(item:) ⇒ MultipleMembershipChecker
Returns a new instance of MultipleMembershipChecker.
10 11 12 |
# File 'app/services/hyrax/multiple_membership_checker.rb', line 10 def initialize(item:) @item = item end |
Instance Attribute Details
#item ⇒ Object (readonly)
Returns the value of attribute item.
7 8 9 |
# File 'app/services/hyrax/multiple_membership_checker.rb', line 7 def item @item end |
Instance Method Details
#check(collection_ids:, include_current_members: false) ⇒ nil, String
Scan a list of collection_ids for multiple single-membership collections.
Collections that have a collection type declaring ‘allow_multiple_membership` as `false` require that its members do not also belong to other collections of the same type.
53 54 55 56 57 58 59 60 61 62 63 |
# File 'app/services/hyrax/multiple_membership_checker.rb', line 53 def check(collection_ids:, include_current_members: false) return unless single_membership_collection_types_exist? proposed_single_membership_collections = filter_to_single_membership_collections(collection_ids) return if proposed_single_membership_collections.blank? collections_to_check = collections_to_check(proposed_single_membership_collections, include_current_members) problematic_collections = check_collections(collections_to_check) (problematic_collections) end |
#validate ⇒ True, String
Use #check instead; for removal in 4.0.0
Validate member_of_collection_ids does not have any membership conflicts based on the collection types of the members.
Collections that have a collection type declaring ‘allow_multiple_membership` as `false` require that its members do not also belong to other collections of the same type.
25 26 27 28 29 30 31 32 33 34 |
# File 'app/services/hyrax/multiple_membership_checker.rb', line 25 def validate Deprecation.warn "#{self.class}##{__method__} is deprecated; use #check instead." return true if item.member_of_collection_ids.empty? || item.member_of_collection_ids.count <= 1 return true unless single_membership_collection_types_exist? collections_to_check = filter_to_single_membership_collections(item.member_of_collection_ids) problematic_collections = check_collections(collections_to_check) errs = (problematic_collections) errs.presence || true end |