2012-04-10 1 views
1

私はここ数日間、MetaWhereの機能を調査しています。述語のほとんどはかなり単純ですが、私はin_allin_anyの使い方に固執しています。MetaWhere in_allとin_anyの適切な構文と使用例

は、ここに私の試みのいくつかを以下のとおりです。

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))) 

私は、彼らがANDまたはORIN句の束になっていると仮定していますが、私はそれらを適切に設定する方法を見つけ出すことはできませんまともな書類を見つけることができませんでした。そして、もし誰かがこれらの述語が有用である状況の例を持っているなら、それは同様に評価されるでしょう。

答えて