Class: Railspress::ContentElement

Inherits:
ApplicationRecord show all
Includes:
HasFocalPoint, SoftDeletable
Defined in:
app/models/railspress/content_element.rb

Instance Method Summary collapse

Methods included from HasFocalPoint

#clear_image_override, #focal_point, #focal_point_css, #has_focal_point?, #has_image_override?, #image_css_for, #image_for, #image_override, #reset_focal_point!, #set_image_override

Methods included from SoftDeletable

#deleted?, #restore

Instance Method Details

#authorObject



29
30
31
32
# File 'app/models/railspress/content_element.rb', line 29

def author
  return nil unless author_id.present? && Railspress.authors_enabled?
  Railspress.author_class.find_by(id: author_id)
end

#author=(user) ⇒ Object



34
35
36
# File 'app/models/railspress/content_element.rb', line 34

def author=(user)
  self.author_id = user&.id
end

#current_versionObject



50
51
52
# File 'app/models/railspress/content_element.rb', line 50

def current_version
  content_element_versions.ordered.first
end

#previous_versionObject



54
55
56
# File 'app/models/railspress/content_element.rb', line 54

def previous_version
  content_element_versions.ordered.second
end

#restore_to_version(version_number) ⇒ Object



71
72
73
74
75
76
# File 'app/models/railspress/content_element.rb', line 71

def restore_to_version(version_number)
  version = content_element_versions.find_by(version_number: version_number)
  return false unless version

  update(text_content: version.text_content)
end

#soft_deleteObject



62
63
64
65
66
67
68
69
# File 'app/models/railspress/content_element.rb', line 62

def soft_delete
  if required?
    errors.add(:base, "Cannot delete a required content element")
    false
  else
    super
  end
end

#valueObject



38
39
40
41
42
43
44
# File 'app/models/railspress/content_element.rb', line 38

def value
  if text?
    text_content
  elsif image? && image.attached?
    Rails.application.routes.url_helpers.rails_blob_url(image, only_path: true)
  end
end

#version_countObject



58
59
60
# File 'app/models/railspress/content_element.rb', line 58

def version_count
  content_element_versions.count
end

#versionsObject



46
47
48
# File 'app/models/railspress/content_element.rb', line 46

def versions
  content_element_versions.ordered
end