Module: Ddr::Models::Metadata

Extended by:
ActiveSupport::Concern
Included in:
AdministrativeMetadata, DescriptiveMetadata
Defined in:
lib/ddr/models/metadata/metadata.rb

Constant Summary collapse

ADMIN_METADATA =
'admin_metadata'.freeze
DESC_METADATA =
'desc_metadata'.freeze

Instance Method Summary collapse

Instance Method Details

#add_value(term, value) ⇒ Object

Add value to term Note that empty value (nil or “”) is not added



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/ddr/models/metadata/metadata.rb', line 44

def add_value(term, value)
  begin
    unless value.blank?
      prop_term = self.class.property_term(term)
      if object.class.properties[prop_term.to_s].multiple?
        values = values(term).to_a << value
        set_values term, values
      else
        set_value term, value
      end
    end
  rescue NoMethodError
    raise ArgumentError, "No such term: #{term}"
  end
end

#set_value(term, value) ⇒ Object

Update singular term with value



19
20
21
22
23
24
25
# File 'lib/ddr/models/metadata/metadata.rb', line 19

def set_value(term, value)
  begin
    self.send("#{term}=", value)
  rescue NoMethodError
    raise ArgumentError, "No such term: #{term}"
  end
end

#set_values(term, values) ⇒ Object

Update term with values Note that empty values (nil or “”) are rejected from values array



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/ddr/models/metadata/metadata.rb', line 29

def set_values(term, values)
  if values.respond_to?(:reject!)
    values.reject! { |v| v.blank? }
  else
    values = nil if values.blank?
  end
  begin
    self.send("#{term}=", values)
  rescue NoMethodError
    raise ArgumentError, "No such term: #{term}"
  end
end

#values(term) ⇒ Object



14
15
16
# File 'lib/ddr/models/metadata/metadata.rb', line 14

def values(term)
  self.send(term)
end