Files
grecia/app/models/banner.rb
Javi Martín 38ad65605e Use excluding instead of where.not(id:
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.
2024-07-22 18:35:35 +02:00

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