Mongoidは、埋め込まれたドキュメントとハッシュ属性をデータベースレベルでほぼ同じ方法で保存します。 mongoidを使用してモデル内のフィールドを宣言する場合は通常のことなので、ネストされた構造の場合は、埋め込みドキュメントを作成するのが通常です。 MongoDBはスキーマがないため、Mongoidでは、ActiveRecordと同じ種類のAPIでフィールドを表示するために、フィールドを宣言する必要があります。ただし、一部のユースケースでは、ハッシュ属性を使用すると柔軟性が少し向上します。この柔軟性の欠点は、ハッシュAPIに制限されているため、自動生成された属性メソッドを取得できず、モデルクラス内で通常行う方法でビジネスロジックをカプセル化できないことです。
例として、多くの質問と回答のペアを含む多くのセクションを格納する必要があるアンケートモデルがあるとします。管理者が新しいセクションと質問を設定できるようにすることがシステムの重要な要件である場合、各質問の明示的なフィールドを含む通常の埋め込みドキュメントとして回答を簡単にモデル化することはできません。そのようなことについては、ハッシュの方が理にかなっているかもしれません。
具体的な要件はわかりませんが、大まかなガイドとして、ドキュメントが埋め込まれた固定スキーマスティックを使用している場合は、オープンエンドモデルが必要な場合は、ハッシュ属性を検討してください。