Ho letto i problemi di sicurezza delle rotaie e quello che mi preoccupa di più è l'assegnazione di massa. La mia applicazione utilizza attr_accessible, tuttavia non sono sicuro di sapere quale sia il modo migliore per gestire le relazioni esposte. Supponiamo di avere un sito Web di creazione/proprietà di contenuti di base. Un utente può creare post sul blog e una categoria associata a quel post del blog.: problema di sicurezza dell'assegnazione di massa con appartenenza ai rapporti
Così ho tre modelli:
- utente
- postale: appartiene ad un utente e una categoria
- categoria: appartiene all'utente
I consentire l'assegnazione di massa su category_id, in modo che l'utente possa annullarlo, c portatelo a una delle loro categorie, o attraverso l'assegnazione di massa, suppongo che potrebbero cambiarlo nella categoria di qualcun altro. È qui che non sono sicuro di quale sarebbe il modo migliore di procedere.
Le risorse che ho esaminato (in particolare railscast #178 e un resource fornito da quel railscast), entrambe menzionano che l'associazione non dovrebbe essere assegnabile in serie, il che ha senso. Non so esattamente in che altro modo consentire all'utente di modificare ciò che la categoria del post sarebbe in un modo railsy.
Qualche idea sul modo migliore per risolvere questo? Lo sto guardando nel modo sbagliato?
UPDATE: Spero di chiarire la mia preoccupazione un po 'di più.
Diciamo che sono in post, ho bisogno qualcosa come il seguente:
def create
@post = Post.new(params[:category])
@post.user_id = current_user.id
# CHECK HERE IF REQUESTED CATEGORY_ID IS OWNED BY USER
# continue on as normal here
end
che sembra un sacco di lavoro? Avrei bisogno di controllarlo su tutti i controller sia nell'aggiornamento che nella creazione di azioni. Tieni presente che c'è più di una sola proprietà_della relazione.
Un'altra risposta è stata molto utile, ma questo è ciò che ha effettivamente risolto il mio problema, quindi lo accetto. – dpb