diff --git a/app/models/awakening.rb b/app/models/awakening.rb new file mode 100644 index 0000000..9970535 --- /dev/null +++ b/app/models/awakening.rb @@ -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 diff --git a/app/models/grid_character.rb b/app/models/grid_character.rb index 7b5a8fb..468bea9 100644 --- a/app/models/grid_character.rb +++ b/app/models/grid_character.rb @@ -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 diff --git a/app/models/grid_weapon.rb b/app/models/grid_weapon.rb index acec98d..459e450 100644 --- a/app/models/grid_weapon.rb +++ b/app/models/grid_weapon.rb @@ -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 diff --git a/app/models/weapon.rb b/app/models/weapon.rb index bbb4c7d..9aedca3 100644 --- a/app/models/weapon.rb +++ b/app/models/weapon.rb @@ -20,6 +20,9 @@ class Weapon < ApplicationRecord } } + has_many :weapon_awakenings + has_many :awakenings, through: :weapon_awakenings + def blueprint WeaponBlueprint end diff --git a/app/models/weapon_awakening.rb b/app/models/weapon_awakening.rb new file mode 100644 index 0000000..a1a88f6 --- /dev/null +++ b/app/models/weapon_awakening.rb @@ -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