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
87 88 89 90 91 92 |
# File 'lib/active_fedora/attributes.rb', line 87 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
94 95 96 |
# File 'lib/active_fedora/attributes.rb', line 94 def defined_attributes= val @defined_attributes = val end |
#find_or_create_defined_attribute(field, dsid, args) ⇒ Object
123 124 125 |
# File 'lib/active_fedora/attributes.rb', line 123 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
98 99 100 101 102 103 104 105 106 107 |
# File 'lib/active_fedora/attributes.rb', line 98 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
119 120 121 |
# File 'lib/active_fedora/attributes.rb', line 119 def multiple?(field) defined_attributes[field].multiple end |
#unique?(field) ⇒ Boolean
Reveal if the attribute has been declared unique
112 113 114 |
# File 'lib/active_fedora/attributes.rb', line 112 def unique?(field) !multiple?(field) end |