module Popolo # A means of contacting an entity. class ContactDetail include Mongoid::Document include Mongoid::Timestamps embedded_in :contactable, polymorphic: true # URLs to documents from which the contact detail is derived. embeds_many :sources, as: :linkable, class_name: 'Popolo::Link' # A human-readable label for the contact detail. field :label, type: String # A type of medium, e.g. 'fax' or 'email'. field :type, type: String # A value, e.g. a phone number or email address. field :value, type: String # A note, e.g. for grouping contact details by physical location. field :note, type: String # The date from which the contact detail is valid. field :valid_from, type: DateString # The date from which the contact detail is no longer valid. field :valid_until, type: DateString validates_presence_of :type, :value end end