4

Sinatra プロジェクトで DataMapper を使用しています。NOT LIKEDataMapper finder メソッドで stamentを使用できるようにしたいのですが、その方法がわかりません。

これがうまくいくと想像するかもしれません:

@people = People.all(:female => 1, :name.like.not => '%julie%')

...しかし、DataMapper はエラーをスローします。notとの順序を入れ替えてlikeも役に立ちません。

これを回避する方法はありますか?

4

1 に答える 1

4

ドキュメントによると、減算を使用してNOTクエリを生成できます。

# Subtraction produces a NOT query
Zoo.all(:state => 'IL') - Zoo.all(:tiger_count.gte => 5)
# in SQL => SELECT * FROM "zoos" WHERE 
#             ("state" = 'IL' AND NOT("tiger_count" >= 5))

したがって、答えは次のようになります。

@people = People.all(:female => 1) - People.all(:name.like => '%julie%')
于 2013-01-16T23:00:30.913 に答える