Module: Representative
- Defined in:
- backend/app/model/mixins/representative.rb
Instance Method Summary collapse
-
#before_validation ⇒ Object
Handle the representative property for subrecords i.e.
-
#representative_for_types ⇒ Object
Example: { is_representative: [:digital_object] }.
-
#representative_id_for_type(type) ⇒ Object
Append _id to ‘type’ i.e.
-
#validate ⇒ Object
Instance Method Details
#before_validation ⇒ Object
Handle the representative property for subrecords i.e. is_representative
, is_display_name
, authorized
5 6 7 8 9 10 11 |
# File 'backend/app/model/mixins/representative.rb', line 5 def before_validation super representative_for_types.keys.each do |property| self.send("#{property}=", nil) if self.send(property) != 1 end end |
#representative_for_types ⇒ Object
Example: { is_representative: [:digital_object] }
19 20 21 |
# File 'backend/app/model/mixins/representative.rb', line 19 def representative_for_types raise 'Not implemented' end |
#representative_id_for_type(type) ⇒ Object
Append _id to ‘type’ i.e. :resource -> :resource_id
14 15 16 |
# File 'backend/app/model/mixins/representative.rb', line 14 def representative_id_for_type(type) type.to_s.concat('_id').to_sym end |
#validate ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'backend/app/model/mixins/representative.rb', line 23 def validate # property is the representative field i.e. `:is_representative`, `:is_display_name`, `:authorized` # records are symbols referring to (parent) record types the property applies to (i.e. :resource) representative_for_types.each do |property, records| next unless self.send(property) # bail if this property is not truthy records.each do |type| id_field = representative_id_for_type(type) validates_unique( [property, id_field], :message => "A #{type} can have only one #{self.class.name} defined as: #{property}" ) map_validation_to_json_property([property, id_field], property) end end super end |