Я думаю, вы можете делать то, что хотите, следующим образом:
if @booze.is_all_gone
@alchy.stashes.each do |stash|
stash.available_booze_types.delete(@booze.id)
end
end
Однако мне кажется, что есть более эффективные способы делать то, что вы пытаетесь сделать. Rails дает вам что-то вроде этого массива, используя отношения. Кроме того, данные в массиве будут потеряны, если вы сбросите приложение (если, как я понимаю, available_booze_types
- это атрибут, который не хранится в базе данных). Если ваше приложение настроено правильно (sta sh имеет много выпивки), область видимости, подобная следующей в классе Stash
, кажется мне правильной:
scope :available_boozes, -> { joins(:boozes).where("number > ?", 0) }
Вы можете использовать ее в следующим образом:
@alchy.stashes.available_boozes
, который вернет только те, которые доступны.