lortza/sorrygirl

View on GitHub
app/models/page.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

class Page < ApplicationRecord
  before_validation :generate_slug

  validates :name, presence: true
  validates :body, presence: true, length: { maximum: 210 }

  validates :slug, uniqueness: { case_sensitive: false }

  PUBLISH_STATUS = %w[Published Unpublished].freeze
  validates :publish_status, inclusion: { in: PUBLISH_STATUS }

  scope :published, -> { where(publish_status: 'Published').order('name') }

  def generate_slug
    self.slug = name.downcase
    self.slug ||= name.parameterize if name
  end

  def to_param
    slug
  end
end