Ho una categoria con un elenco di elementi. Gli articoli hanno una posizione e la categoria ha una relazione has_many: items,: order => "position". Quando un utente aggiorna un valore di posizione, voglio vedere la sua posizione. La mia posizione è un galleggiante per consentire lo spostamento tra numeri arrotondati.binari - come aggiornare un'associazione dopo un salvataggio
pos=item.category.items.map(&:id)
current_position=pos.index(id.to_i)
item.save # want to refresh the relationship here
pos_new=item.categoty.items.map(&:id)
# grabbing this since just accessing item isn't updated if positioning has changed
item_new=Item.find(id)
pos_new=item_new.category.items.map(&:id)
new_position=pos_new.index(id)
if current_position!=new_position
is_moved=true # sent back in JSON to propagate a dynamic change.
end
Quanto sopra funziona ma sembra davvero prolisso. C'è un modo per me di dire sull'articolo salvare che la relazione di categoria deve essere aggiornata poiché l'ordine potrebbe essere cambiato?
Chi viene ancora a questa risposta dalla ricerca (come ho appena fatto): questo comportamento non è più supportato da binari. Riceverai un avviso di ritiro. Il nuovo modo per le raccolte è di usare il metodo 'reload' sul proxy di raccolta. – klaustopher
@klaustopher Grazie. Aggiornato la mia risposta. –
"AVVISO DI DEPRESSIONE: Passare un argomento per forzare un'associazione a ricaricare è ora deprecato e verrà rimosso in Rails 5.1. Si prega di chiamare' reload' sull'oggetto padre invece. (Chiamato da a (pry): 2) " –
Dorian