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:
parent
0b84a648f5
commit
1f67964aa9
5 changed files with 39 additions and 6 deletions
15
app/models/awakening.rb
Normal file
15
app/models/awakening.rb
Normal 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
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class GridCharacter < ApplicationRecord
|
class GridCharacter < ApplicationRecord
|
||||||
|
belongs_to :awakening, optional: true
|
||||||
belongs_to :party,
|
belongs_to :party,
|
||||||
counter_cache: :characters_count,
|
counter_cache: :characters_count,
|
||||||
inverse_of: :characters
|
inverse_of: :characters
|
||||||
validates_presence_of :party
|
validates_presence_of :party
|
||||||
|
|
||||||
validate :awakening_level, on: :update
|
validate :validate_awakening_level, on: :update
|
||||||
validate :transcendence, on: :update
|
validate :transcendence, on: :update
|
||||||
validate :validate_over_mastery_values, on: :update
|
validate :validate_over_mastery_values, on: :update
|
||||||
validate :validate_aetherial_mastery_value, on: :update
|
validate :validate_aetherial_mastery_value, on: :update
|
||||||
|
|
@ -22,11 +23,9 @@ class GridCharacter < ApplicationRecord
|
||||||
set perpetuity: false
|
set perpetuity: false
|
||||||
end
|
end
|
||||||
|
|
||||||
def awakening_level
|
def validate_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
|
||||||
errors.add(:awakening, 'awakening level too low') if awakening['level'] < 1
|
|
||||||
errors.add(:awakening, 'awakening level too high') if awakening['level'] > 9
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def transcendence
|
def transcendence
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,8 @@ class GridWeapon < ApplicationRecord
|
||||||
belongs_to :weapon_key2, class_name: 'WeaponKey', foreign_key: :weapon_key2_id, optional: true
|
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 :weapon_key3, class_name: 'WeaponKey', foreign_key: :weapon_key3_id, optional: true
|
||||||
|
|
||||||
|
belongs_to :awakening, optional: true
|
||||||
|
|
||||||
validate :compatible_with_position, on: :create
|
validate :compatible_with_position, on: :create
|
||||||
validate :no_conflicts, on: :create
|
validate :no_conflicts, on: :create
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,9 @@ class Weapon < ApplicationRecord
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
has_many :weapon_awakenings
|
||||||
|
has_many :awakenings, through: :weapon_awakenings
|
||||||
|
|
||||||
def blueprint
|
def blueprint
|
||||||
WeaponBlueprint
|
WeaponBlueprint
|
||||||
end
|
end
|
||||||
|
|
|
||||||
14
app/models/weapon_awakening.rb
Normal file
14
app/models/weapon_awakening.rb
Normal 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
|
||||||
Loading…
Reference in a new issue