Module: ActiveFedora::Attributes::ClassMethods

Defined in:
lib/active_fedora/attributes.rb

Instance Method Summary collapse

Instance Method Details

#defined_attributesObject



98
99
100
101
102
103
# File 'lib/active_fedora/attributes.rb', line 98

def defined_attributes
  @defined_attributes ||= {}.with_indifferent_access
  return @defined_attributes unless superclass.respond_to?(:defined_attributes) and value = superclass.defined_attributes
  @defined_attributes = value.dup if @defined_attributes.empty?
  @defined_attributes
end

#defined_attributes=(val) ⇒ Object



105
106
107
# File 'lib/active_fedora/attributes.rb', line 105

def defined_attributes= val
  @defined_attributes = val
end

#find_or_create_defined_attribute(field, dsid, args) ⇒ Object



134
135
136
# File 'lib/active_fedora/attributes.rb', line 134

def find_or_create_defined_attribute(field, dsid, args)  
  self.defined_attributes[field] ||= DatastreamAttribute.new(field, dsid, datastream_class_for_name(dsid), args)
end

#has_attributes(*fields) ⇒ Object

Raises:

  • (ArgumentError)


109
110
111
112
113
114
115
116
117
118
# File 'lib/active_fedora/attributes.rb', line 109

def has_attributes(*fields)
  options = fields.pop
  datastream = options.delete(:datastream).to_s
  raise ArgumentError, "You must provide a datastream to has_attributes" if datastream.blank?
  define_attribute_methods fields
  fields.each do |f|
    create_attribute_reader(f, datastream, options)
    create_attribute_setter(f, datastream, options)
  end
end

#multiple?(field) ⇒ Boolean

Reveal if the attribute is multivalued

Parameters:

  • field (Symbol)

    the field to query

Returns:

  • (Boolean)


130
131
132
# File 'lib/active_fedora/attributes.rb', line 130

def multiple?(field)
  defined_attributes[field].multiple
end

#unique?(field) ⇒ Boolean

Reveal if the attribute has been declared unique

Parameters:

  • field (Symbol)

    the field to query

Returns:

  • (Boolean)


123
124
125
# File 'lib/active_fedora/attributes.rb', line 123

def unique?(field)
  !multiple?(field)
end