Update party.rb
We moved updating the party's element and extra flag to inside the party. We use an after_commit hook to minimize the amount of queries we're running to do this.
This commit is contained in:
parent
41d33c46fd
commit
52d417a693
1 changed files with 18 additions and 0 deletions
|
|
@ -87,6 +87,9 @@ class Party < ApplicationRecord
|
||||||
before_create :set_shortcode
|
before_create :set_shortcode
|
||||||
before_create :set_edit_key
|
before_create :set_edit_key
|
||||||
|
|
||||||
|
after_commit :update_element!, on: %i[create update]
|
||||||
|
after_commit :update_extra!, on: %i[create update]
|
||||||
|
|
||||||
##### Amoeba configuration
|
##### Amoeba configuration
|
||||||
amoeba do
|
amoeba do
|
||||||
set weapons_count: 0
|
set weapons_count: 0
|
||||||
|
|
@ -194,6 +197,21 @@ class Party < ApplicationRecord
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def update_element!
|
||||||
|
main_weapon = weapons.detect { |gw| gw.position.to_i == -1 }
|
||||||
|
new_element = main_weapon&.weapon&.element
|
||||||
|
if new_element.present? && self.element != new_element
|
||||||
|
update_column(:element, new_element)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def update_extra!
|
||||||
|
new_extra = weapons.any? { |gw| GridWeapon::EXTRA_POSITIONS.include?(gw.position.to_i) }
|
||||||
|
if self.extra != new_extra
|
||||||
|
update_column(:extra, new_extra)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def set_shortcode
|
def set_shortcode
|
||||||
self.shortcode = random_string
|
self.shortcode = random_string
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue