Mischen ActiveRecord-Bedingungen
Ich will, um Datensätze zu finden, die auf einer Kombination von created_on >= einige Datum UND name IN einer Liste von Namen.
Für ">=" ich hätte zum verwenden der sql-Bedingung. Für "IN" würde ich die Verwendung einer hash von Bedingungen, wo der Schlüssel ist : - name und der Wert des array von Namen.
Gibt es eine Möglichkeit die beiden zu verbinden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie named scopes in rails 2.1 und höher
dann können Sie
Oder geben Sie named_scope eine lambda sodass Sie übergeben Argumente
dann können Sie
Wenn Sie eine ältere version von Rails, Honza, die Abfrage ist in der Nähe, aber Sie brauchen, um hinzuzufügen, Klammern für die Saiten, die in die IN-Bedingung:
Verwendung von IN kann eine gemischte Tüte: es ist am schnellsten für Ganzzahlen und den langsamsten für eine Liste von strings. Wenn Sie finden, selbst mit nur einem Namen, auf jeden Fall nutzen ein ist-gleich-operator:
Die kühle Sache über named_scopes ist, dass Sie die Arbeit an Sammlungen zu:
Mehr auf named_scopes sehen Ryan ' s Ankündigung und die Railscast auf named_scopes
Wenn Sie gehen, um pass in Variablen Bereiche ist die Verwendung einer lambda.
Können Sie die Kette
where
Klausel:Person.where(name: ['foo', 'bar', 'baz']).where('id >= ?', 42).first
Scopes bereits vorgeschlagen, die sind ziemlich gut. Die clasic Weg, es zu tun wäre:
Denke ich werde ich entweder mit einfachen AR-Finder oder Searchgasm.