Mongoid przechowuje osadzone dokumenty i atrybuty skrótu w podobny sposób na poziomie bazy danych. Podczas pracy z mongoid normalne jest deklarowanie pól w modelach, więc jeśli masz strukturę zagnieżdżoną, normalne jest tworzenie osadzonego dokumentu. Ponieważ MongoDB jest mongoidem bez schematu, musisz zadeklarować pola, aby zaprezentować je w tym samym rodzaju API, co ActiveRecord. Ale w niektórych przypadkach użycia atrybut Hash zapewnia nieco większą elastyczność. Wadą tej elastyczności jest to, że jesteś ograniczony do interfejsu Hash API, więc nie otrzymujesz automatycznie generowanych metod atrybutów i nie możesz hermetyzować logiki biznesowej w sposób, w jaki normalnie robisz to w klasie modelu.
Jako przykład załóżmy, że masz model kwestionariusza, w którym musisz przechowywać wiele sekcji zawierających wiele par pytanie-odpowiedź. Jeśli kluczowym wymaganiem systemu jest to, aby administrator mógł konfigurować nowe sekcje i pytania, nie byłoby łatwo modelować odpowiedzi jako zwykły osadzony dokument zawierający wyraźne pola dla każdego pytania. W takim przypadku hasz może mieć więcej sensu.
Nie wiem, jakie są twoje konkretne wymagania, ale jako przybliżony przewodnik powiedziałbym, że podczas pracy ze stałym schematem trzymaj się osadzonego dokumentu, ale gdy potrzebujesz modelu otwartego, rozważ atrybuty skrótu.