Add and update models

This updates models for the awakening update.

* Awakening and WeaponAwakening models were added
* Weapon, GridWeapon and GridCharacter models get relationships to the new models defined
* GridCharacter had a validation on `awakening_level` that needed to be fixed
This commit is contained in:
Justin Edmund 2023-06-18 23:00:08 -07:00
parent 91d4f170da
commit 9ac60b1949
5 changed files with 39 additions and 6 deletions

15
app/models/awakening.rb Normal file
View file

@ -0,0 +1,15 @@
# frozen_string_literal: true
class Awakening < ApplicationRecord
def weapon_awakenings
WeaponAwakening.where(awakening_id: id)
end
def weapons
weapon_awakenings.map(&:weapon)
end
def awakening
AwakeningBlueprint
end
end

View file

@ -1,12 +1,13 @@
# frozen_string_literal: true
class GridCharacter < ApplicationRecord
belongs_to :awakening, optional: true
belongs_to :party,
counter_cache: :characters_count,
inverse_of: :characters
validates_presence_of :party
validate :awakening_level, on: :update
validate :validate_awakening_level, on: :update
validate :transcendence, on: :update
validate :validate_over_mastery_values, on: :update
validate :validate_aetherial_mastery_value, on: :update
@ -22,11 +23,9 @@ class GridCharacter < ApplicationRecord
set perpetuity: false
end
def awakening_level
return if awakening.nil?
errors.add(:awakening, 'awakening level too low') if awakening['level'] < 1
errors.add(:awakening, 'awakening level too high') if awakening['level'] > 9
def validate_awakening_level
errors.add(:awakening, 'awakening level too low') if awakening_level < 1
errors.add(:awakening, 'awakening level too high') if awakening_level > 9
end
def transcendence

View file

@ -10,6 +10,8 @@ class GridWeapon < ApplicationRecord
belongs_to :weapon_key2, class_name: 'WeaponKey', foreign_key: :weapon_key2_id, optional: true
belongs_to :weapon_key3, class_name: 'WeaponKey', foreign_key: :weapon_key3_id, optional: true
belongs_to :awakening, optional: true
validate :compatible_with_position, on: :create
validate :no_conflicts, on: :create

View file

@ -20,6 +20,9 @@ class Weapon < ApplicationRecord
}
}
has_many :weapon_awakenings
has_many :awakenings, through: :weapon_awakenings
def blueprint
WeaponBlueprint
end

View file

@ -0,0 +1,14 @@
# frozen_string_literal: true
class WeaponAwakening < ApplicationRecord
belongs_to :weapon
belongs_to :awakening
def weapon
Weapon.find(weapon_id)
end
def awakening
Awakening.find(awakening_id)
end
end