Class: Redde::Seo::Finder::Objected

Inherits:
Object
  • Object
show all
Defined in:
app/models/redde/seo/finder/objected.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url, objekt) ⇒ Objected

Returns a new instance of Objected.



6
7
8
9
10
# File 'app/models/redde/seo/finder/objected.rb', line 6

def initialize(url, objekt)
  @url = url
  @objekt = objekt
  @seo = Redde::Seo.for_object(objekt).first
end

Instance Attribute Details

#objektObject

Returns the value of attribute objekt.



4
5
6
# File 'app/models/redde/seo/finder/objected.rb', line 4

def objekt
  @objekt
end

#seoObject

Returns the value of attribute seo.



4
5
6
# File 'app/models/redde/seo/finder/objected.rb', line 4

def seo
  @seo
end

#urlObject

Returns the value of attribute url.



4
5
6
# File 'app/models/redde/seo/finder/objected.rb', line 4

def url
  @url
end

Instance Method Details

#create_seoObject



48
49
50
51
# File 'app/models/redde/seo/finder/objected.rb', line 48

def create_seo
  s = Redde::Seo.new(seo_params.merge(skip_basic_validation: true))
  s.save if objekt.try(:id) && objekt.try(:class).try(:name)
end

#default_seoObject



19
20
21
# File 'app/models/redde/seo/finder/objected.rb', line 19

def default_seo
  Redde::Seo::DefaultSeo.new
end

#findObject



12
13
14
15
16
17
# File 'app/models/redde/seo/finder/objected.rb', line 12

def find
  return updated_object_seo if seo && !seo.empty?
  return templated_seo if templated?
  create_seo
  default_seo
end

#object_class_nameObject



28
29
30
# File 'app/models/redde/seo/finder/objected.rb', line 28

def object_class_name
  objekt.class.name
end

#objekt_paramsObject



40
41
42
# File 'app/models/redde/seo/finder/objected.rb', line 40

def objekt_params
  { seoable_id: objekt.id, seoable_type: objekt.class.name }
end

#seo_paramsObject



44
45
46
# File 'app/models/redde/seo/finder/objected.rb', line 44

def seo_params
  objekt_params.merge(url: url)
end

#templated?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'app/models/redde/seo/finder/objected.rb', line 32

def templated?
  Redde::Seo::CustomClassNames::NAMES.include? object_class_name
end

#templated_seoObject



36
37
38
# File 'app/models/redde/seo/finder/objected.rb', line 36

def templated_seo
  "Redde::Seo::#{object_class_name}Seo".constantize.new(objekt)
end

#updated_object_seoObject



23
24
25
26
# File 'app/models/redde/seo/finder/objected.rb', line 23

def updated_object_seo
  seo.update(url: url) if seo.url != url
  seo
end