Ho una casella di selezione multipla per un'associazione has_many. Le params entrare come:Autorizzazione di un array di ID con la gemma Pundit
foo_ids: ["1", "2", "3"]
Uso dei parametri forti, non mi permetto questo attributo perché vorrei autorizzare io stesso modo la gente non può semplicemente mettere quello che vogliono in esso.
def update
bar.foos = authorized_foos
bar.update(baz_params)
respond_with bar
end
private
def authorized_foos
foos = Foo.find(params[:baz][:foo_ids])
foos.each do |foo|
authorize foo, :manage?
end
end
Questo approccio sta per costringermi a trovare tutti i Foos, ciclo attraverso di loro, e autorizzare singolarmente. C'è un modo più semplice per gestire l'autorizzazione has_many, preferibilmente con la gemma Pundit?
Ciao Logan, sono uno dei manutentori di Pundit e vorrei conoscere il tuo caso d'uso. È semplicemente l'autorizzazione di tutti i record nella raccolta, o sono in qualche modo coinvolti controlli aggiuntivi? Il tuo contributo potrebbe risolvere la tua domanda in modo corretto in una versione futura e anche aiutare gli altri. Sarei felice se potessi lasciare un commento [qui] (https://github.com/elabs/pundit/issues/60). Grazie in anticipo! –
Per salvare tutti dalla lettura dell'intero thread di discussione su Github. Questo problema è chiuso, fondamentalmente dicendo che può essere gestito estendendo Pundit o cambiando il modo in cui si va su questo. –