2011-09-07 6 views
14

In sostanza sto cercando un tipo di relazione no-op da applicare a una catena di ambiti.Come si crea un ambito ActiveRecord che non influisce sulla query in Rails 3 utilizzando Arel (presumibilmente)?

Diciamo che ho una catena di ambiti:

Post.approved.published.all 

Ora, a scopo di debug, desidero fare la portata published fare niente affatto, in modo che la catena restituirà solo approved messaggi, indipendentemente dal se sono published o no.

Cosa farei tornare nel seguente metodo:

def self.published 
    # what to return? 
end 

risposta

18

Fai published un alias per all oppure usa scoped per restituire un relazione alle quali condizioni aggiuntive possono essere chainged:

def self.published 
    all 
    #or 
    scoped 
end 

I userebbe un ambito, restituendo all ...

scope :published, all 

o, rendono un alias per scoped:

scope :published, scoped 
+0

ero sicuramente in cerca di tutto, la sua così evidente ora non sono sicuro perché non ci ho pensato. – jakeonrails

+2

Questo è veramente vecchio, ma se vuoi la relazione piuttosto che una matrice, usa 'scoped' per restituire un ambito anonimo (Rails 3). –

+0

@kardeiz Sì, questo è sicuramente il metodo migliore, non ne ero a conoscenza al momento in cui ho scritto questa risposta. – meagar

Problemi correlati