Я столкнулся с той же проблемой и не нашел хорошего решения в сети.
После нескольких попыток я разработал решение:
class A
include Mongoid::Document
include Mongoid::Timestamps
...
end
class B < A
def self.collection_name
:your_collection_name_1
end
...
end
class C < A
def self.collection_name
:your_collection_name_2
end
...
end
Перед любым доступом к коллекции mongo mongoid получает имя коллекции из метода collection_name.
Таким образом, я переопределяю метод 'collection_name' класса mongoid, который возвращает имя коллекции (вместо имени базового класса с помощью 's': 'As')
Итак, все команды записи (или чтения) из класса B будут вставлены (выбраны) в коллекцию 'your_collection_name_1', а класс C будет вставлен в коллекцию 'your_collection_name_2'.