Ich habe die Fähigkeiten von MetaWhere
in den letzten paar Tagen erforscht. Die meisten Prädikationen sind ziemlich einfach, aber ich bin fest, wie man in_all
und in_any
verwendet.Korrekte Syntax und Anwendungsfälle für MetaWhere in_all und in_any
Hier sind einige meiner Versuche:
Group.where(:id.in_any => [1,2,3])
=> SELECT `groups`.* FROM `groups` WHERE ((`groups`.`id` IN (1) OR `groups`.`id` IN (2) OR `groups`.`id` IN (3)))
Group.where(:id.in_any => [[1,2,3],[4,5,6],[7,8,9]])
=> undefined method 'visit_Fixnum' for #<MetaWhere::Visitors::Predicate:0x3740ba0>
Group.where(:id.in_any => [["1","2","3"],["4","5","6"],["7","8","9"]])
=> SELECT `groups`.* FROM `groups` WHERE (('1' AND '4' AND '7'))
Group.where(:id.in_any => ["(1,2,3)","(4,5,6)","(7,8,9)"])
=> SELECT `groups`.* FROM `groups` WHERE ((`groups`.`id` IN (0) OR `groups`.`id` IN (0) OR `groups`.`id` IN (0)))
Group.where(:id.in_any => ["1,2,3","4,5,6","7,8,9"])
=> SELECT `groups`.* FROM `groups` WHERE ((`groups`.`id` IN (1) OR `groups`.`id` IN (4) OR `groups`.`id` IN (7)))
Ich gehe davon aus sie zu AND
oder OR
ein Bündel von IN
Klauseln angeblich sind, aber ich kann nicht herausfinden, wie man sie richtig einrichten Ich habe auch keine anständige Dokumentation gefunden. Und wenn jemand Beispiele von Situationen hat, in denen diese Vorhersagen nützlich wären, würde dies ebenfalls geschätzt werden.