app/controllers/spotlight/solr_controller.rb in blacklight-spotlight-2.7.2 vs app/controllers/spotlight/solr_controller.rb in blacklight-spotlight-2.8.0
- old
+ new
@@ -34,11 +34,18 @@
def solr_documents
req = ActiveSupport::JSON.decode(json_content)
Array.wrap(req).map do |r|
- blacklight_config.document_model.new(r).to_solr.merge(@exhibit.solr_data).merge(r)
+ custom_field_data = r.dup.extract! @exhibit.custom_fields.pluck(:slug)
+ other_field_data = r.except(custom_field_data.keys)
+
+ doc = blacklight_config.document_model.new(other_field_data)
+
+ create_or_update_solr_document_sidecar(doc, r)
+
+ doc.to_solr.merge(@exhibit.solr_data).merge(other_field_data)
end
end
def json_content
if params[:resources_json_upload]
@@ -50,8 +57,18 @@
def validate_writable_index!
return if Spotlight::Engine.config.writable_index
render plain: 'Spotlight is unable to write to solr', status: 409
+ end
+
+ def create_or_update_solr_document_sidecar(doc, data)
+ return if data.blank?
+
+ sidecar = doc.sidecar(@exhibit)
+ sidecar.data = sidecar.data.merge(data)
+ sidecar.save
+
+ sidecar
end
end
end