「and」句と「or」句がgrailsのfindAll()メソッド内で機能しないのはなぜですか?
たとえば、次のコード:
Student.findAll {
and {
name == "A"
name ==~ "%A"
}
}.collect { it.name }
リストを生成します:
['AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ']
これは間違っています。何も生み出さなかったはずです。正確な名前「A」と末尾「A」を持つ条件に一致するレコードはありません。表示されている文字列は、私の Student テーブル内のすべてのレコードをリストしています。
少し悪化します。このコード:
Student.findAll {
or {
name == "A"
name ==~ "%A"
}
}.collect { it.name }
同じリストを生成します。
['AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ']
実際には、レコード「AA」だけを返す必要があります。
このコードに何か問題がありますか?
ありがとう!