Module: Sufia::SolrDocumentBehavior
- Extended by:
- ActiveSupport::Concern
- Includes:
- GenericFile::MimeTypes, Permissions::Readable
- Defined in:
- app/models/concerns/sufia/solr_document_behavior.rb
Instance Method Summary collapse
- #collection? ⇒ Boolean
- #create_date ⇒ Object
- #creator ⇒ Object
- #date_uploaded ⇒ Object
- #depositor(default = '') ⇒ Object
- #description ⇒ Object
- #edit_groups ⇒ Object
- #edit_people ⇒ Object
- #file_format ⇒ Object
-
#hydra_model ⇒ Object
Method to return the ActiveFedora model.
-
#itemtype ⇒ Object
Add a schema.org itemtype.
- #label ⇒ Object
- #mime_type ⇒ Object
- #read_groups ⇒ Object
- #resource_type ⇒ Object
-
#route_key ⇒ Object
Give our SolrDocument an ActiveModel::Naming appropriate route_key.
- #tags ⇒ Object
- #title ⇒ Object
- #title_or_label ⇒ Object
-
#to_model ⇒ Object
Offer the source (ActiveFedora-based) model to Rails for some of the Rails methods (e.g. link_to).
- #to_param ⇒ Object
Instance Method Details
#collection? ⇒ Boolean
112 113 114 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 112 def collection? hydra_model == 'Collection' end |
#create_date ⇒ Object
53 54 55 56 57 58 59 60 61 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 53 def create_date field = self[CatalogController.uploaded_field] return unless field.present? begin Date.parse(field).to_formatted_s(:standard) rescue ArgumentError ActiveFedora::Base.logger.info "Unable to parse date: #{field.first.inspect} for #{self['id']}" end end |
#creator ⇒ Object
84 85 86 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 84 def creator Array(self[Solrizer.solr_name("creator")]).first end |
#date_uploaded ⇒ Object
43 44 45 46 47 48 49 50 51 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 43 def date_uploaded field = self[Solrizer.solr_name("date_uploaded", :stored_sortable, type: :date)] return unless field.present? begin Date.parse(field).to_formatted_s(:standard) rescue ArgumentError ActiveFedora::Base.logger.info "Unable to parse date: #{field.first.inspect} for #{self['id']}" end end |
#depositor(default = '') ⇒ Object
63 64 65 66 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 63 def depositor(default = '') val = Array(self[Solrizer.solr_name("depositor")]).first val.present? ? val : default end |
#description ⇒ Object
72 73 74 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 72 def description Array(self[Solrizer.solr_name('description')]).first end |
#edit_groups ⇒ Object
104 105 106 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 104 def edit_groups Array(self[::Ability.edit_group_field]) end |
#edit_people ⇒ Object
108 109 110 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 108 def edit_people Array(self[::Ability.edit_user_field]) end |
#file_format ⇒ Object
80 81 82 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 80 def file_format Array(self[Solrizer.solr_name('file_format')]).first end |
#hydra_model ⇒ Object
Method to return the ActiveFedora model
39 40 41 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 39 def hydra_model self[Solrizer.solr_name('active_fedora_model', Solrizer::Descriptor.new(:string, :stored, :indexed))] end |
#itemtype ⇒ Object
Add a schema.org itemtype
9 10 11 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 9 def itemtype Sufia.config.resource_types_to_schema[resource_type.first] || 'http://schema.org/CreativeWork' end |
#label ⇒ Object
76 77 78 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 76 def label Array(self[Solrizer.solr_name('label')]).first end |
#mime_type ⇒ Object
96 97 98 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 96 def mime_type Array(self[Solrizer.solr_name("mime_type")]).first end |
#read_groups ⇒ Object
100 101 102 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 100 def read_groups Array(self[::Ability.read_group_field]) end |
#resource_type ⇒ Object
92 93 94 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 92 def resource_type Array(self[Solrizer.solr_name("resource_type")]) end |
#route_key ⇒ Object
Give our SolrDocument an ActiveModel::Naming appropriate route_key
23 24 25 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 23 def route_key get(Solrizer.solr_name('has_model', :symbol)).split(':').last.downcase end |
#tags ⇒ Object
88 89 90 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 88 def Array(self[Solrizer.solr_name("tag")]) end |
#title ⇒ Object
68 69 70 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 68 def title Array(self[Solrizer.solr_name('title')]).first end |
#title_or_label ⇒ Object
17 18 19 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 17 def title_or_label title || label end |
#to_model ⇒ Object
Offer the source (ActiveFedora-based) model to Rails for some of the Rails methods (e.g. link_to).
32 33 34 35 36 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 32 def to_model @m ||= ActiveFedora::Base.load_instance_from_solr(id) return self if @m.class == ActiveFedora::Base @m end |
#to_param ⇒ Object
13 14 15 |
# File 'app/models/concerns/sufia/solr_document_behavior.rb', line 13 def to_param self[:id] end |