lib/active_fedora/base.rb in active-fedora-1.2.9 vs lib/active_fedora/base.rb in active-fedora-2.0.0

- old
+ new

@@ -845,17 +845,17 @@ ds.to_xml(fields_xml) if ds.class.included_modules.include?(ActiveFedora::MetadataDatastreamHelper) || ds.kind_of?(ActiveFedora::RelsExtDatastream) end return xml.to_s end - # Return a Solr::Document version of this object. - # @solr_doc (optional) Solr::Document to insert the fields into + # Return a Hash representation of this object where keys in the hash are appropriate Solr field names. + # @solr_doc (optional) Hash to insert the fields into # @opts (optional) Hash # If opts[:model_only] == true, the base object metadata and the RELS-EXT datastream will be omitted. This is mainly to support shelver, which calls .to_solr for each model an object subscribes to. - def to_solr(solr_doc = Solr::Document.new, opts={}) + def to_solr(solr_doc = Hash.new, opts={}) unless opts[:model_only] - solr_doc << {SOLR_DOCUMENT_ID.to_sym => pid, ActiveFedora::SolrService.solr_name(:system_create, :date) => self.create_date, ActiveFedora::SolrService.solr_name(:system_modified, :date) => self.modified_date, ActiveFedora::SolrService.solr_name(:active_fedora_model, :symbol) => self.class.inspect} + solr_doc.merge!(SOLR_DOCUMENT_ID.to_sym => pid, ActiveFedora::SolrService.solr_name(:system_create, :date) => self.create_date, ActiveFedora::SolrService.solr_name(:system_modified, :date) => self.modified_date, ActiveFedora::SolrService.solr_name(:active_fedora_model, :symbol) => self.class.inspect) end datastreams.each_value do |ds| # solr_doc = ds.to_solr(solr_doc) if ds.class.included_modules.include?(ActiveFedora::MetadataDatastreamHelper) ||( ds.kind_of?(ActiveFedora::RelsExtDatastream) || ( ds.kind_of?(ActiveFedora::QualifiedDublinCoreDatastream) && !opts[:model_only] ) solr_doc = ds.to_solr(solr_doc) if ds.kind_of?(ActiveFedora::MetadataDatastream) || ds.kind_of?(ActiveFedora::NokogiriDatastream) || ( ds.kind_of?(ActiveFedora::RelsExtDatastream) && !opts[:model_only] ) end @@ -864,9 +864,10 @@ rescue logger.info("Error encountered trying to output solr_doc details for pid: #{pid}") end return solr_doc end + # ** EXPERIMENTAL ** # # This method can be used instead of ActiveFedora::Model::ClassMethods.load_instance. # It works similarly except it populates an object from Solr instead of Fedora.