mongodbにレコードを追加するときは、必要なキーを指定でき、データベースに保存されます。問題は、次に別のレコードを挿入するときに、それらのキーが記憶されることです。たとえば、次のようにすると、次のようになります。
Product.create :foo => 123
その後
Product.create :bar => 456
:foo => nil2枚目のレコードでフィールドを取得します。
これは間違いなくmongodb自体の制限ではありません。これは、railsコンソールを再起動して、異なる列のセットでさらに別のレコードを作成すると、最初の2つのレコードの列が追加されないためです。
したがって、mongomapperは使用されたすべてのキーを記憶し、値が指定されていない場合でも、それらすべてをすべてのレコードに挿入するようです。
問題は明らかにです:このクレイジーな属性の爆発を無効にするにはどうすればよいですか?
基本的に、モデルで指定する「永続的な」キーのみをすべてのレコードに含める必要がありますが、すべての「余分な」属性はレコードごとに指定し、結果のレコードを混乱させないようにします。