Sha256: c0934abf2c3a8756cf3a1c12301deeb6a4f69e151532219b6df9df3c4016b19a

Contents?: true

Size: 1.42 KB

Versions: 32

Compression:

Stored size: 1.42 KB

Contents

# typed: strict
class Wizard < ApplicationRecord
  validates :name, length: { minimum: 5 }, presence: true
  # simulate conditional validation
  validates :parent_email, presence: true, if: :Slytherin?

  typed_enum house: {
    Gryffindor: 0,
    Hufflepuff: 1,
    Ravenclaw: 2,
    Slytherin: 3,
  }

  # To create conflict with enum
  class Professor; end

  enum professor: {
    "Severus Snape": 0,
    "Minerva McGonagall": 1,
    "Pomona Sprout": 2,
    "Filius Flitwick": 3,
    "Hagrid": 4,
    "Alastor 'Mad-Eye' Moody": 5,
  }

  typed_enum broom: {
    nimbus: 'nimbus',
    firebolt: 'firebolt',
  }, _prefix: true

  typed_enum quidditch_position: {
    keeper: 0,
    seeker: 1,
    beater: 2,
    chaser: 3,
  }, _prefix: :quidditch

  enum hair_color: {
    brown: 0,
    black: 1,
    blonde: 2,
  }, _suffix: :hair

  enum eye_color: {
    brown: 0,
    green: 1,
    blue: 2,
  }, _prefix: :color, _suffix: :eyes

  serialize :owl_results, Hash
  serialize :newt_subjects # no specific data type, uses the default YAML Object coder
  serialize :pets, Array
  serialize :patronus_characteristics, JSON

  has_one :wand
  has_many :spell_books
  # habtm which is optional at the db level
  has_and_belongs_to_many :subjects

  # simulate when belongs_to is optional by default
  belongs_to :school, optional: true

  scope :recent, -> { where('created_at > ?', 1.month.ago) }
  has_one_attached :school_photo
  has_many_attached :hats
end

Version data entries

32 entries across 16 versions & 1 rubygems

Version Path
sorbet-rails-0.7.34 spec/support/v6.1/app/models/wizard.rb
sorbet-rails-0.7.34 spec/support/v6.0/app/models/wizard.rb
sorbet-rails-0.7.33 spec/support/v6.1/app/models/wizard.rb
sorbet-rails-0.7.33 spec/support/v6.0/app/models/wizard.rb
sorbet-rails-0.7.32 spec/support/v6.1/app/models/wizard.rb
sorbet-rails-0.7.32 spec/support/v6.0/app/models/wizard.rb
sorbet-rails-0.7.31 spec/support/v6.1/app/models/wizard.rb
sorbet-rails-0.7.31 spec/support/v6.0/app/models/wizard.rb
sorbet-rails-0.7.27 spec/support/v6.1/app/models/wizard.rb
sorbet-rails-0.7.27 spec/support/v6.0/app/models/wizard.rb
sorbet-rails-0.7.26 spec/support/v6.0/app/models/wizard.rb
sorbet-rails-0.7.26 spec/support/v6.1/app/models/wizard.rb
sorbet-rails-0.7.25 spec/support/v6.0/app/models/wizard.rb
sorbet-rails-0.7.25 spec/support/v6.1/app/models/wizard.rb
sorbet-rails-0.7.24 spec/support/v6.0/app/models/wizard.rb
sorbet-rails-0.7.24 spec/support/v6.1/app/models/wizard.rb
sorbet-rails-0.7.23 spec/support/v6.0/app/models/wizard.rb
sorbet-rails-0.7.23 spec/support/v6.1/app/models/wizard.rb
sorbet-rails-0.7.22 spec/support/v6.0/app/models/wizard.rb
sorbet-rails-0.7.22 spec/support/v6.1/app/models/wizard.rb