Module: ActiveFedora::ContentModel
- Defined in:
- lib/active_fedora/content_model.rb
Constant Summary collapse
- CMODEL_NAMESPACE =
"afmodel"
- CMODEL_PID_SUFFIX =
""
Class Method Summary collapse
- .best_model_for(obj) ⇒ Object
-
.default_model(obj) ⇒ Object
Returns a ruby class to use if no other class could be find to instantiate Override this method if you need something other than the default strategy.
-
.known_models_for(obj) ⇒ Object
returns an array of the model classes that are defined in the current application that the given object asserts (ie. if the object asserts a StreamingVideo model but the application doesn’t define a StreamingVideo model, it will be excluded from this list..
-
.models_asserted_by(obj) ⇒ Object
list all of the models asserted by the provided object.
-
.sanitized_class_name(klass) ⇒ Object
Override this, if you prefer your class names serialized some other way.
-
.uri_to_model_class(uri) ⇒ Object
Returns an ActiveFedora Model class corresponding to the given uri if one can be found.
Class Method Details
.best_model_for(obj) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/active_fedora/content_model.rb', line 16 def self.best_model_for(obj) best_model_match = obj.class unless obj.instance_of? ActiveFedora::Base known_models_for(obj).each do |model_value| # If this is of type ActiveFedora::Base, then set to the first found :has_model. best_model_match ||= model_value # If there is an inheritance structure, use the most specific case. if best_model_match > model_value best_model_match = model_value end end best_model_match end |
.default_model(obj) ⇒ Object
Returns a ruby class to use if no other class could be find to instantiate Override this method if you need something other than the default strategy
54 55 56 |
# File 'lib/active_fedora/content_model.rb', line 54 def self.default_model(obj) ActiveFedora::Base end |
.known_models_for(obj) ⇒ Object
returns an array of the model classes that are defined in the current application that the given object asserts (ie. if the object asserts a StreamingVideo model but the application doesn’t define a StreamingVideo model, it will be excluded from this list.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/active_fedora/content_model.rb', line 36 def self.known_models_for(obj) models_array = [] models_asserted_by( obj ).each do |model_uri| m = uri_to_model_class(model_uri) if m models_array << m end end if models_array.empty? models_array = [default_model(obj)] end return models_array end |
.models_asserted_by(obj) ⇒ Object
list all of the models asserted by the provided object
12 13 14 |
# File 'lib/active_fedora/content_model.rb', line 12 def self.models_asserted_by(obj) obj.relationships(:has_model) end |
.sanitized_class_name(klass) ⇒ Object
Override this, if you prefer your class names serialized some other way
7 8 9 |
# File 'lib/active_fedora/content_model.rb', line 7 def self.sanitized_class_name(klass) klass.name.gsub(/(::)/, '_') end |
.uri_to_model_class(uri) ⇒ Object
Returns an ActiveFedora Model class corresponding to the given uri if one can be found. Returns false if no corresponding model can be found.
61 62 63 64 65 66 67 68 |
# File 'lib/active_fedora/content_model.rb', line 61 def self.uri_to_model_class( uri ) rc = Model.from_class_uri(uri) if rc && (rc.superclass == ActiveFedora::Base || rc.ancestors.include?(ActiveFedora::Base)) rc else false end end |