Utilizzo di scope_builder per creare condizionalmente un ambito denominato in un metodo di ricerca () del modello di record attivo

StackOverflow https://stackoverflow.com/questions/292922

  •  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?

È stato utile?

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,

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