Note we're excluding a few files: * Configuration files that weren't generated by us * Migration files that weren't generated by us * The Gemfile, since it includes an important comment that must be on the same line as the gem declaration * The Budget::Stats class, since the heading statistics are a mess and having shorter lines would require a lot of refactoring
28 lines
926 B
Ruby
28 lines
926 B
Ruby
class Banner < ApplicationRecord
|
|
acts_as_paranoid column: :hidden_at
|
|
include ActsAsParanoidAliases
|
|
|
|
attribute :background_color, default: "#e7f2fc"
|
|
attribute :font_color, default: "#222222"
|
|
|
|
translates :title, touch: true
|
|
translates :description, touch: true
|
|
include Globalizable
|
|
|
|
validates_translation :title, presence: true, length: { minimum: 2 }
|
|
validates_translation :description, presence: true
|
|
|
|
validates :target_url, presence: true
|
|
validates :post_started_at, presence: true
|
|
validates :post_ended_at, presence: true
|
|
|
|
has_many :sections
|
|
has_many :web_sections, through: :sections
|
|
|
|
scope :with_active, -> { where("post_started_at <= :date and post_ended_at >= :date", date: Date.current) }
|
|
scope :with_inactive, -> { where.not(id: with_active) }
|
|
scope :in_section, ->(section_name) do
|
|
joins(:web_sections, :sections).where("web_sections.name ilike ?", section_name)
|
|
end
|
|
end
|