複数のフィルターが適用されたSequel データセットがある場合、既存のフィルターの 1 つを削除または上書きする新しいデータセットを作成するにはどうすればよいですか?
ds1 = DB[:x].filter(a:1, b:2)
#=> <Sequel::Dataset: "SELECT * FROM x WHERE ((a = 1) AND (b = 2))">
ds2 = ds1.filter(a:42) # I want to CHANGE a, not add another
#=> <Sequel::Dataset: "SELECT * FROM x WHERE ((a = 1) AND (b = 2) AND (a = 42))">
このSequel::Dataset#unfiltered
メソッドはすべてのフィルタを削除します (たとえば、 を削除しb=2
ます)。上記の単純なケースでは簡単に再追加できますが、実際のケースではコードの重複が発生します。