This method was added in Rails 7.0 and makes the code slihgtly more readable. The downside is that it generates two queries instead of one, so it might generate some confusion when debugging SQL queries. Its impact on performance is probably negligible.
28 lines
911 B
Ruby
28 lines
911 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.current, post_ended_at: Date.current..) }
|
|
scope :with_inactive, -> { excluding(with_active) }
|
|
scope :in_section, ->(section_name) do
|
|
joins(:web_sections, :sections).where("web_sections.name ilike ?", section_name)
|
|
end
|
|
end
|