This way it'll be easier for other Consul installations to overwrite parts of the code, like the default options.
44 lines
1.1 KiB
Ruby
44 lines
1.1 KiB
Ruby
class Legislation::DraftVersion < ApplicationRecord
|
|
VALID_STATUSES = %w[draft published].freeze
|
|
|
|
acts_as_paranoid column: :hidden_at
|
|
include ActsAsParanoidAliases
|
|
|
|
translates :title, touch: true
|
|
translates :changelog, touch: true
|
|
translates :body, touch: true
|
|
include Globalizable
|
|
|
|
belongs_to :process, foreign_key: "legislation_process_id", inverse_of: :draft_versions
|
|
has_many :annotations,
|
|
foreign_key: "legislation_draft_version_id",
|
|
inverse_of: :draft_version,
|
|
dependent: :destroy
|
|
|
|
validates_translation :title, presence: true
|
|
validates_translation :body, presence: true
|
|
validates :status, presence: true, inclusion: { in: ->(*) { VALID_STATUSES }}
|
|
|
|
scope :published, -> { where(status: "published").order("id DESC") }
|
|
|
|
def body_html
|
|
MarkdownConverter.new(body, with_toc_data: true).render
|
|
end
|
|
|
|
def toc_html
|
|
MarkdownConverter.new(body).render_toc
|
|
end
|
|
|
|
def display_title
|
|
status == "draft" ? "#{title} *" : title
|
|
end
|
|
|
|
def total_comments
|
|
annotations.sum(:comments_count)
|
|
end
|
|
|
|
def best_comments
|
|
Comment.where(commentable: annotations, ancestry: nil).sort_by_supports.limit(10)
|
|
end
|
|
end
|