Я думаю, что можно определить, какие типы reviewable нужно исключить, сделав что-то вроде этого:
class Reviewable < ActiveRecord::Base
def self.exclude_types
db_types = Reviewable.distinct.pluck(:type)
@exclude_types ||= db_types - Reviewable.types
end
...
end
Затем мы можем использовать эти типы для применения default scope. Вероятно, нам придётся добавить индекс по полю type в таблицу.