Mit scope_builder bedingt einen benannten Umfang in einem Active Record Modell suchen bauen () -Methode

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

  •  08-07-2019
  •  | 
  •  

Frage

Ich bin mit ausgezeichneten scope_builder bedingt bauen ein neuer benannte Umfang in der Suche () -Methode eines Active Record-Modells zu verwenden.

Das Beispiel Dokumentation zeigt, dass Sie so etwas wie die folgenden Möglichkeiten:

  # in product model
  def self.search(options)
    scope_builder do |builder|
      builder.released.visible
      builder.cheap if options[:cheap]
    end
  end

Aber wenn ich die entsprechende Version des obigen Code in meinem Modell und Call-Suche () sind mit einigen Optionen übergeben, was ich zurück zu bekommen ist eine Instanz ScopeBuilder :: Builder und nicht die Ergebnisse der verketteten Namen Umfang Ausführung mit den Optionen habe ich bestanden, das ist, was ich erwarten würde.

Meine Frage ist: Wie erhalte ich die Ergebnisse der Ausführung Builder (Optionen) anstelle einer Instanz des Erbauers

War es hilfreich?

Lösung

Sieht aus wie der scope_builder Block wurde entworfen den Umfang zurückzukehren -builder Instanz, so dass Sie die Ergebnisse aus dem Beispiel bekommen.

Versuchen Sie, auf die Instanz mit .all die Ergebnisse zu greifen. Zum Beispiel so etwas wie:

@results = Product.search().all

seine Tests , es sieht wie folgt funktionieren soll. (Linie 47: „sollte Umfang in Block der Lage sein, den Aufbau“)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top