Fix MissingAttributeError in ClosetHanger#merge_quantities

Oh rough, when moving an item list entry from one list to another, our
logic to merge their quantities if it's already in that list was just
fully crashing!

That is, moves without anything to merge were working, but moves that
required a merge were raising Internal Server Error 500, because the
`list_id` attribute wasn't present.

I'm not sure why this ever worked, I'm assuming using `list_id` in the
`where` condition would include it in the `select` implicitly in a
previous version of Rails? Or maybe Rails used to have fallback
behavior to run a second query, instead of raising
`MissingAttributeError` like it does now?

Well, in any case, this seems to fix it! Whew!
This commit is contained in:
Emi Matchu 2024-02-28 13:30:55 -08:00
parent d8b3f613e3
commit 522287ed53

View file

@ -203,7 +203,7 @@ class ClosetHanger < ApplicationRecord
# hanger. Select enough for our logic and to update flex_source. # hanger. Select enough for our logic and to update flex_source.
# TODO: We deleted flex, does this reduce what data we need here? # TODO: We deleted flex, does this reduce what data we need here?
conflicting_hanger = self.class.select([:id, :quantity, :user_id, :item_id, conflicting_hanger = self.class.select([:id, :quantity, :user_id, :item_id,
:owned]). :owned, :list_id]).
where(:user_id => user_id, :item_id => item_id, :owned => owned, where(:user_id => user_id, :item_id => item_id, :owned => owned,
:list_id => list_id).where(['id != ?', self.id]).first :list_id => list_id).where(['id != ?', self.id]).first