Domanda

Ho rails_authorization_plugin installato e funzionante con i modelli .

Qual è il modo migliore per attuare controlli delle autorizzazioni sul mio sito?

Ho complicato condizioni per quando un'istanza di un oggetto dovrebbe essere visibile, c'è un modo efficace per concatenare insieme quindi non mi recupero più set di dati e rettifica il mio DB a seguito di un ciclo su restituiti dati filtrarlo?

È stato utile?

Soluzione

C'è un modo efficiente: assicurarsi di eseguire solo una query, e che la query si esegue restituisce esattamente gli oggetti che si desidera. Più facile a dirsi che a farsi, naturalmente.

Un modo per gestire questa situazione è quello di costruire le vostre condizioni di utilizzo ambiti.

@posts = @thread.posts.not_deleted.this_week.not_secret

Se tutti questi metodi sono gli ambiti, che sarà solo una query.

Se le condizioni sono troppo complesse per rendere facilmente scopi, probabilmente si dovrebbe basta scrivere un metodo per restituire gli oggetti visibili per l'utente.

class User
def posts_for(thread)
  if is_admin?
    thread.posts
  elsif thread.owner == self
    thread.posts.not_deleted
  else
    Post.find(:all, :conditions => something_complicated(thread, self))
  end
end
end

La mia applicazione ha un sacco di tipi di oggetti e autorizzazioni molto complicate, così abbiamo catturare le chiamate come quella con method_missing, e li rotta verso una libreria permesso che sa come rendere tutte le varie richieste.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top