Utilizzo di scope_builder per creare condizionalmente un ambito denominato in un metodo di ricerca () del modello di record attivo
-
08-07-2019 - |
Domanda
Sto usando l'eccellente scope_builder per creare in modo condizionale un nuovo ambito denominato da utilizzare in un metodo search () di un modello di record attivo.
La documentazione di esempio mostra che puoi fare qualcosa del tipo:
# in product model
def self.search(options)
scope_builder do |builder|
builder.released.visible
builder.cheap if options[:cheap]
end
end
Ma quando includo la versione pertinente del codice precedente nel mio modello e chiamo search () con alcune opzioni passate, ciò che mi viene restituito è un'istanza di ScopeBuilder :: Builder e non i risultati dell'esecuzione dell'ambito denominato concatenato con le opzioni che ho passato, che è quello che mi aspetterei.
La mia domanda è: Come posso ottenere i risultati dell'esecuzione del builder (opzioni) anziché di un'istanza del builder?
Soluzione
Sembra che il blocco scope_builder fosse progettato per restituire l'ambito -builder, quindi dovrai ottenere i risultati dall'istanza.
Prova a usare .all sull'istanza per afferrare i risultati. Ad esempio qualcosa del tipo:
@results = Product.search().all
Da it test,