2012-04-10 27 views
1

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.

Antwort

Verwandte Themen