Files
turbovault-app/app/models/item.rb
2026-03-28 19:24:29 -04:00

35 lines
839 B
Ruby

class Item < ApplicationRecord
# Associations
belongs_to :user
belongs_to :platform, optional: true
# Enums
enum :item_type, {
console: "console",
controller: "controller",
accessory: "accessory",
other: "other"
}, prefix: true
# Validations
validates :name, presence: true
validates :item_type, presence: true
validates :date_added, presence: true
# Callbacks
before_validation :set_date_added, on: :create
# Scopes
scope :consoles, -> { where(item_type: "console") }
scope :controllers, -> { where(item_type: "controller") }
scope :accessories, -> { where(item_type: "accessory") }
scope :by_platform, ->(platform_id) { where(platform_id: platform_id) }
scope :recent, -> { order(date_added: :desc) }
private
def set_date_added
self.date_added ||= Date.current
end
end