drop_chunks удаляет только полные куски. если ваш chunk_time_interval установлен примерно на 12 часов, timescaledb будет сбрасывать только полные 12-часовые блоки.
Необходимо было бы использовать опцию условий на методе находки. Опцией условий может быть или Хеш, Массив или Строка. Существует много опций для условий, таким образом, я рекомендую читать справку API для него. Например, если Вы хотите к (1):
Product.find(:all, :conditions => ['cost > ? and is_visible is true', 100])
Или (2)
Product.find(:all, :conditions => ["name != '' or cost =0])
Если Вы хотите что-то как LINQ, можно проверить альтернативный Ruby ORMs как DataMapper или Продолжение, которые обеспечивают более сложные возможности фильтрации.
Например, в Продолжении 2 можно записать:
items.filter((:cost > 100) & (:is_visible = 1))
Можно также использовать поразрядное "|" оператор, чтобы получить ИЛИ обусловить.
В DataMapper это будет похоже:
Model.all(:cost.gt => 100, :is_visible.eq => 1)
Однако некоторым людям не нравится то, что те опции реализованы путем перегрузки класса стандартного символа.
Это - точно проблема, которую SQL был разработан для решения, итак, почему не использовать его? Просто добавьте соответствующее: условие и Ваша проблема решены.