2013-01-21 12 views
6

Ho qualche problema nel far funzionare correttamente l'ambito nei rail.Come decifrare un record associato in Rails 3

I miei modelli:

class User < ActiveRecord::Base 
    default_scope :conditions => 'users.deleted_at IS NULL' 


class Feed < ActiveRecord::Base 
    belongs_to :user, :foreign_key => :author_id 

Quando chiamo il seguente:

feeds = Feed.includes(:user) 

voglio saltare il default_scope per gli utenti. così ho provato:

feeds = Feed.unscoped.includes(:user) 

Ma questo non rimuove l'ambito dagli utenti. Qualche suggerimento su come posso farlo funzionare? Grazie

+1

http://stackoverflow.com/questions/3963124/default -scope-and-associations o http://stackoverflow.com/questions/4758145/how-to-use-unscoped-on-assocated-relations-in-rails3 help? –

+1

Purtroppo, no. Il primo è obsoleto. Il 2 ° non è dettagliato usando include. – AnApprentice

risposta

14

È possibile eseguire questa operazione utilizzando .unscoped in forma di blocco, come documentato here:

User.unscoped do 
    @feeds = Feed.includes(:user).all 
end 

Nota che se non si applica l'ambito predefinito dipende dal fatto che non sei all'interno del blocco quando la query viene effettivamente eseguita. Ecco perché quanto sopra utilizza .all, forzando l'esecuzione della query.

Così, mentre i lavori di cui sopra, questo non sarà - la query viene eseguita all'esterno del blocco .unscoped e applicherà l'ambito predefinito:

User.unscoped do 
    @feeds = Feed.includes(:user) 
end 
@feeds #included Users will have default scope 
+1

Non sono sicuro che lo stia seguendo, spiegando come sto interrogando i Feed e includendo: user for performance. Come si potrebbe applicare? – AnApprentice

+0

Ho appena provato ad aggiungerlo a user.rb, non ha avuto effetto? – AnApprentice

+1

@AnApprentice Hai chiesto come evitare di utilizzare l'ambito predefinito su un'associazione elencata in ".includes". Questo è come. Sei ancora desideroso di caricare gli utenti, ma non limitarti a quelli che non sono stati cancellati. Non è quello che volevi? – MrTheWalrus

Problemi correlati