Attenzione ad usare unscoped per inibire il default_scope

Scritto da Silvio Relli circa un anno fa. Jan3

Su un'applicazione Rails 3, mettiamo ci sia un default_scope sul modello Article che restituisce soltanto gli articoli pubblicati.

Con la seguente interrogazione
@article = current_user.articles.unscoped.find(params[:id])
vorremmo ottenere un determinato articolo anche se non è pubblicato, usando il metodo unscoped per annullare l'effetto del default scope.

Purtroppo però unscoped annulla anche il controllo sulla relazione dell'articolo con l'utente, togliendo praticamente il where che filtra l'utente dalla select, e permettendo di ottenere il post di un utente qualsiasi.

Similmente con @articles = current_user.articles.unscoped.all non otteniamo solamente gli articoli del current_user ma bensì tutti gli articoli.

Non solo si tratta di un comportamento inaspettato e non documentato, ma anche non auspicabile.

Fate molta attenzione perchè l'uso di unscoped può portare a comportamenti decisamente indesiderabili!
 

Postato in  | Tag , , ,  | Nessun commento

Comoda e funzionale documentazione di Rails 3

Scritto da Silvio Relli oltre un anno fa. Aug17

Rails searchable api documentation

Rails Searchable API Doc è una ottima documentazione in linea di Rails dotata di una comodissima funzione di ricerca.

Ricorda molto da vicino Railsbrain a cui ero piuttosto affezionato, che purtroppo però è rimasta ferma alla versione 2.3.2 di Rails.

La ricerca è piuttosto reattiva e scorrere tra i risultati risulta molto più intuitivo rispetto ad APIdock, un'altra risorsa simile.

Inoltre è possibile personalizzare il set della documentazione specificando la versione di Ruby, Rails ed includendo anche la documentazione di alcune delle gemme più diffuse come Authlogic, Rack, RSpec, Sinatra, Haml ed altre.

Alcuni esempi:

Postato in  | Tag , ,  | Nessun commento