Mongoid съхранява вградени документи и хеш атрибути по почти същия начин на ниво база данни. Нормално е, когато работите с mongoid, да декларирате вашите полета във вашите модели, така че ако имате вложена структура, нормално е да създадете вграден документ. Тъй като MongoDB е без схема, mongoid се нуждае от вас да декларирате полета, за да ги представите в същия вид API, който прави ActiveRecord. Но за някои случаи на употреба атрибутът Hash ви дава малко повече гъвкавост. Недостатъкът на тази гъвкавост е, че сте ограничени до Hash API, така че не получавате автоматично генерирани методи на атрибути и не можете да капсулирате бизнес логиката по начина, по който обикновено бихте могли да го направите в рамките на моделен клас.
Като пример, да предположим, че имате модел на въпросник, в който трябва да съхраните много секции, съдържащи много двойки въпрос-отговор. Ако ключово изискване на системата е администраторът да може да настройва нови секции и въпроси, тогава няма да можете лесно да моделирате отговорите като обикновен вграден документ, съдържащ изрични полета за всеки въпрос. За такива неща хеш може да има повече смисъл.
Не знам какви са вашите специфични изисквания, но като грубо ръководство бих казал, че когато работите с фиксирана схема, се придържайте към вграден документ, но когато имате нужда от отворен модел, помислете за хеш атрибутите.