Class: Spotlight::Resource

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
SolrDocument::AtomicUpdates
Defined in:
app/models/spotlight/resource.rb

Direct Known Subclasses

Resources::Csv, Resources::Upload

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from SolrDocument::AtomicUpdates

#reindex

Instance Attribute Details

#performing_reindexObject

Returns the value of attribute performing_reindex.



9
10
11
# File 'app/models/spotlight/resource.rb', line 9

def performing_reindex
  @performing_reindex
end

Class Method Details

.class_for_resource(r) ⇒ Object



24
25
26
27
28
29
30
# File 'app/models/spotlight/resource.rb', line 24

def self.class_for_resource r
  p = providers.select do |p|
    p.can_provide? r
  end

  p.sort_by(&:weight).first
end

.providersObject



20
21
22
# File 'app/models/spotlight/resource.rb', line 20

def self.providers
  Spotlight::Engine.config.resource_providers
end

Instance Method Details

#becomes_providerObject



43
44
45
46
47
48
49
50
51
52
53
# File 'app/models/spotlight/resource.rb', line 43

def becomes_provider
  klass = Spotlight::Resource.class_for_resource(self)

  if klass
    z = self.becomes klass
    z.type = z.class.to_s
    z
  else
    self
  end
end

#needs_provider?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'app/models/spotlight/resource.rb', line 55

def needs_provider?
  type.blank?
end

#to_solrObject



32
33
34
35
36
37
# File 'app/models/spotlight/resource.rb', line 32

def to_solr
  {
    spotlight_resource_id_ssim: "#{(type.tableize if type) || self.class.to_s.tableize }:#{id}",
    spotlight_resource_url_ssim: url
  }
end

#update_index_time!Object



39
40
41
# File 'app/models/spotlight/resource.rb', line 39

def update_index_time!
  self.update_columns indexed_at: Time.current
end