hensei-api/app/models/raid.rb

25 lines
1.1 KiB
Ruby

# frozen_string_literal: true
class Raid < ApplicationRecord
belongs_to :group, class_name: 'RaidGroup', foreign_key: :group_id
# Validations
validates :name_en, presence: true
validates :slug, presence: true, uniqueness: true
validates :group_id, presence: true
validates :element, inclusion: { in: 0..6 }, allow_nil: true
validates :level, numericality: { only_integer: true, greater_than: 0 }, allow_nil: true
# Filter scopes
scope :by_element, ->(element) { where(element: element) if element.present? }
scope :by_group, ->(group_id) { where(group_id: group_id) if group_id.present? }
scope :by_difficulty, ->(difficulty) { joins(:group).where(raid_groups: { difficulty: difficulty }) if difficulty.present? }
scope :by_hl, ->(hl) { joins(:group).where(raid_groups: { hl: hl }) if hl.present? }
scope :by_extra, ->(extra) { joins(:group).where(raid_groups: { extra: extra }) if extra.present? }
scope :with_guidebooks, -> { joins(:group).where(raid_groups: { guidebooks: true }) }
scope :ordered, -> { joins(:group).order('raid_groups.order ASC, raids.level DESC') }
def blueprint
RaidBlueprint
end
end