私は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
またはOR
たくさんのIN
条項があると思いますが、それらを適切に設定する方法を理解することも、まともなドキュメントを見つけることもできませんでした。そして、これらの述語が役立つ状況の例があれば、それもありがたいです。