Mongoid lưu trữ các tài liệu nhúng và các thuộc tính Hash theo cách khá giống nhau ở cấp cơ sở dữ liệu. Điều bình thường khi làm việc với mongoid để khai báo các trường của bạn trong các mô hình của bạn, vì vậy nếu bạn có cấu trúc lồng nhau thì việc tạo một tài liệu nhúng là điều bình thường. Vì MongoDB là mongoid ít giản đồ nên bạn cần khai báo các trường để hiển thị chúng trong cùng một loại API mà ActiveRecord làm. Nhưng đối với một số trường hợp sử dụng, thuộc tính Hash cho phép bạn linh hoạt hơn một chút. Nhược điểm của tính linh hoạt đó là bạn bị giới hạn đối với API Hash, vì vậy bạn không nhận được các phương thức thuộc tính được tạo tự động và bạn không thể đóng gói logic nghiệp vụ theo cách mà bạn thường làm trong một lớp mô hình.
Ví dụ:giả sử bạn có một mô hình Bảng câu hỏi trong đó bạn cần lưu trữ nhiều phần chứa nhiều cặp câu hỏi-câu trả lời. Nếu yêu cầu chính của hệ thống là quản trị viên có thể thiết lập các phần và câu hỏi mới thì bạn sẽ không thể dễ dàng lập mô hình câu trả lời như một tài liệu nhúng thông thường chứa các trường rõ ràng cho mỗi câu hỏi. Đối với những điều đó, một Hash có thể có ý nghĩa hơn.
Tôi không biết yêu cầu cụ thể của bạn là gì nhưng như một hướng dẫn sơ bộ, tôi sẽ nói rằng khi bạn đang làm việc với một thanh lược đồ cố định với một tài liệu nhúng, nhưng khi bạn cần một mô hình kết thúc mở, hãy xem xét các thuộc tính Hash.