Module: ActiveFedora::Attributes::ClassMethods
- Defined in:
- lib/active_fedora/attributes.rb
Instance Method Summary collapse
- #defined_attributes ⇒ Object
- #defined_attributes=(val) ⇒ Object
- #find_or_create_defined_attribute(field, dsid, args) ⇒ Object
- #has_attributes(*fields) ⇒ Object
-
#multiple?(field) ⇒ Boolean
Reveal if the attribute is multivalued.
-
#unique?(field) ⇒ Boolean
Reveal if the attribute has been declared unique.
Instance Method Details
#defined_attributes ⇒ Object
88 89 90 91 92 93 |
# File 'lib/active_fedora/attributes.rb', line 88 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
95 96 97 |
# File 'lib/active_fedora/attributes.rb', line 95 def defined_attributes= val @defined_attributes = val end |
#find_or_create_defined_attribute(field, dsid, args) ⇒ Object
124 125 126 |
# File 'lib/active_fedora/attributes.rb', line 124 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
99 100 101 102 103 104 105 106 107 108 |
# File 'lib/active_fedora/attributes.rb', line 99 def has_attributes(*fields) = fields.pop datastream = .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, ) create_attribute_setter(f, datastream, ) end end |
#multiple?(field) ⇒ Boolean
Reveal if the attribute is multivalued
120 121 122 |
# File 'lib/active_fedora/attributes.rb', line 120 def multiple?(field) defined_attributes[field].multiple end |
#unique?(field) ⇒ Boolean
Reveal if the attribute has been declared unique
113 114 115 |
# File 'lib/active_fedora/attributes.rb', line 113 def unique?(field) !multiple?(field) end |