J'ai Addresses
, Lists
, et AddressListMemberships
.Quelle est la bonne façon de supprimer une connexion many-to-many?
Dans cette application particulière, il y a plus de mille List
s et plusieurs milliers de Addresse
s.
J'ai mis en place une page d'interface utilisateur pour permettre aux utilisateurs de contrôler un List
Address
es. J'ai ajouté ces actions ...
class ListsController < ApplicationController
# ...
def add_address
@list = List.find(params[:id])
address = Address.find(params[:address_id])
@list.addresses << address unless @list.addresses.include? address
redirect_to(manage_list_addresses_path(@list))
end
def remove_address
@list = List.find(params[:id])
address = Address.find(params[:address_id])
@list.addresses.delete address
redirect_to(manage_list_addresses_path(@list))
end
end
Tout fonctionne à merveille.
Cependant, ces actions semblent contenir trop de code. Je suppose qu'il ya une plus succincte, Railsish façon de les mettre en œuvre, en particulier cette chose ...
@list.addresses << address unless @list.addresses.include? address
Vous envisagez une situation différente de celle à laquelle j'ai affaire. Oui, les cases à cocher sont une excellente solution dans de nombreux cas. Je vais essayer de clarifier ma question. – Ethan