Overview

新しいバージョンへのアップグレードの手順については、 mongoid.orgをご覧ください。

バージョン5.0.2以降、 変更ログについては Github リリース を参照してください。

5.0.1

解決された問題

  • MONGOID- 3020問題がなくなりましたを示すテストが追加されました。

  • MONGOID- 3025問題がなくなりましたを示すテストが追加されました。

  • MONGOID- 3061は問題が発生しなくなりました。

  • MONGOID- 3073問題がなくなりましたを示すテストが追加されました。

  • MONGOID- 3085問題がなくなりましたを示すテストが追加されました。

  • MONGOID- 3101は問題が発生しなくなりました。

  • MONGOID- 3160は問題が発生しなくなりました。

  • MONGOID- 3176は問題が発生しなくなりました。

  • MONGOID- 3214問題がなくなりましたを示すテストが追加されました。

  • MONGOID- 3296 counter_cache の更新コールバックを追加しました。

  • MONGOID- 3326問題がなくなりましたを示すテストが追加されました。

  • MONGOID- 3361は問題が発生しなくなりました。

  • MONGOID- 3365問題がなくなりましたを示すテストが追加されました。

  • MONGOID- 3402親に永続性オプションを適用します。

  • MONGOID- 3524は問題が発生しなくなりました。

  • MONGOID- 3529テストはすでに存在し、問題でないことを示しています。

  • MONGOID- 3543テストはすでに存在し、問題でないことを示しています。

  • MONGOID- 3611問題がなくなりましたを示すテストが追加されました。

  • MONGOID- 3650は問題が発生しなくなりました。

  • MONGOID- 3826MONGOID- 4109タイムレス リークを修正しました。

  • MONGOID- 3946問題がなくなりましたを示すテストが追加されました。

  • MONGOID- 3969問題がなくなりましたを示すテストが追加されました。

  • MONGOID- 3971問題ではありません。

  • MONGOID- 3979問題ではありません。テストはすでに存在します。

  • MONGOID- 3985問題ではありません。

  • MONGOID- 4078の動作は意図されたものです。

  • MONGOID- 4079問題ではありません。

  • MONGOID- 4088 Atlasのアカウントは、結果が null のサブドキュメント ドット表記 のアカウントです。

  • MONGOID- 4098 Ruby ドライバーの変更によって修正されました。 Ruby- 1029を参照してください。

  • MONGOID- 4101問題ではありません。

  • MONGOID- 4106問題ではありません。

  • MONGOID- 4110問題ではありません。

  • MONGOID- 4119条件セレクターがパイプライン演算子の値になるようにします。

  • MONGOID- 4121問題ではありません。

  • MONGOID- 4123 MONGOID- 4159の結果として修正しました。

  • MONGOID- 4125プロシージャで参照されているスコープが適用されていないことを確認します。

  • MONGOID- 4132問題ではありません。

  • MONGOID- 4157 Ruby ドライバーのバージョン2.1.2によって修正されました。

  • MONGOID- 4162新しいドライバーへのインデックス オプション マッピングを調整します。 (@Nilsformat)

  • MONGOID- 3737問題がなくなりましたを示すテストが追加されました。

  • MONGOID- 3621問題ではありません。

  • MONGOID- 3551問題ではありません。

  • MONGOID- 3696問題がなくなりましたを示すテストが追加されました。

  • MONGOID- 3858問題がなくなりましたを示すテストが追加されました。

  • MONGOID- 3672問題ではありません。

  • MONGOID- 4172 1レベルのディープ ネストでのみ位置演算子を使用します。

  • 秘密キーが存在する場合、リポジトリと署名 gem に公開証明書を追加しました

5.0.0

メジャー変更(下位互換性がありません)

  • Mongoid は、Moped の代わりに公式のmongo Rubyドライバー 2.x を使用するようになりました。

  • ほとんどのドライバー固有の構成オプションが変更されました。新しいオプションについては、こちらを参照してください。

  • sessionへのすべての参照はclientに置き換えられました。 これには、mongoid.yml の構成、 store_inオプション、および名前にSessionが含まれるすべての例外とモジュールが含まれます。

  • find_and_modify は削除され、 3オプションに置き換えられました( find_one_and_updatefind_one_and_deletefind_one_and_replace

  • text_search は、 2.6のクエリで$textオプションになったため削除されました。

  • Mongoid は MongoDB 2.2のサポートを終了しました。サポートは2.4以降のみになりました。

  • # 3768 firstlastは、並べ替えオプションが指定されていない場合、 _id並べ替えを追加しなくなりました。 ドキュメントが最初または最後であることを保証するには、明示的なソートを含める必要があります。

  • Document#deleted? エイリアスは削除されました。引き続きDocument#destroyed?を使用してください。

新機能

  • # 4016アトミック操作のフィールドに対してプライベートおよび保護されたセッターを許可します。 (ロガー)

  • find_and_modify{upsert: true}を使用している場合に3985が nil を返す

  • # 3963拡張 JSON オブジェクト ID をfindに渡すことを許可します。

  • # 3846条件で何も使用されていない場合は、#pull が許可されます。 (ブラウザー マルチゾーン)

解決された問題

  • # 4091スーパークラスで定義されたスコープを呼び出すときにサブクラス コンテキストを使用する。 (Edger Bears Bears)

  • # 4075は、実際に削除されていた各インデックスに固有のインデックス ログを削除しました。

  • # 4071反復処理中に追加されたドキュメントを確認するための列挙可能な関係のロードを修正しました。

  • # 4077多くの関係に列挙可能性が含まれるようになりました。

  • # 4052値がないローカライズされたフィールドの一意の検証を修正しました。

  • # 4033アトミックな更新で $ 位置演算子の使用をすべて削除しました。

  • # 4030 Dup/クローンの例外には動的属性が自動的に含まれます。

  • # 4005 Rails 環境を持たない Rails コンポーネントに mongoid を含める問題を修正しました。

  • # 3993 Mongoid::Attributes::Dynames を使用せずにstore_as を使用する埋め込みドキュメントでdup / cloneが失敗する問題を修正しました

  • # 3991が # Changed を呼び出した後に変更された埋め込みドキュメントに変更がフラグされない問題を修正しました。 子要素の変更

  • # 3874コンテキストにスナップショット オプションを追加しました。

  • # 3868 Lake タスクにモデルをロードすると、Rails パスが展開されるようになりました。

  • # 3764列挙可能なターゲットのケース ステートメント チェックを修正しました。

  • # 3740メソッドのみを使用する場合、またはメソッドなしで使用する場合のMissing attribute: '_id'エラーを修正しました(dx 7 )

  • # 3631子作成後にbefore_saveコールバックが 2 回呼び出される問題を修正しました

  • # 3599サブクラスのスーパークラスからのデフォルト スコープの適用を修正しました。

  • # 3104列挙可能なターゲットを適切な順序で最初と最後にチェックするように修正しました。

4.0.2

新機能

  • # 3931 : find_or_create_by を追加します。 メソッドを使用して、多数の関連付けに関連付けます。 (Tom Bearer )

  • # 3731 find_by を追加しました。 使用して複数のドキュメントを挿入できます。 (ギガラン)

解決された問題

  • # 3722 #store_in と # を で組み合わせる場合は、正しいデータベース名を使用します。 (アーサー ニーズ)

  • # 3934 find_by を実行するときにソートを適用しないでください。 (アーサー ニーズ)

  • コンテキスト メモリで3935される複数のフィールドを修正しました。 (チャンク)

  • # 3904 BSON::Document#symbols はキーをシンボルとして返す必要があります。 (アーサー ニーズ)

  • ドキュメント キーを正しい記号化するために、# 3948 Rail 4.2の delete_undefined_indexs を修正します。 (アダム ロール)

  • #3626 Document#to_key はObjectIdをstringとして返す必要があるため、そのIDを使用してクエリを実行できます。 (アーサー ニーズ)

  • 既存のフィールド以外のフィールドで「set」が呼び出され、Mongoid::Attributes::Device がモデルに含まれていない場合、 3888は UnknownAttributeError を発生させます。 (シャットダウン)

  • # 3889 「set」 では、Mongoid::Attributes::Dynamec がモデルに含まれている場合に、存在しないフィールドの値を設定できるようになります。 (シャットダウン)

  • # 3812保存時における検証コンテキストを修正しました(YAroslasこと、Zemaryanuhin)

4.0.1

解決された問題

  • # 3911 「親」という名前の関係を修正しました。 (ネットワーク)

  • ID の過負荷時に発生する問題を回避するために、#id ではなく3792への多数の内部呼び出しを修正しました( 3881 Delain)

  • # 3847コレクションに最初のクエリ バッチよりも多くのドキュメントがある場合に、「QueryCache#get_ more」結果を修正しました。 (エンベロープ)

  • # 3684 only() スコープを使用する場合は、MissingAttributeError を発生させないようにします。 (アーサー ニーズ)

  • # 3703プルー メソッドは値を圧縮 しないでください 。 (アーサー ニーズ)

  • # 3773 cache_key タイムスタンプに、プレーン秒ではなくナノ秒を使用します。 (Máx in 含まない)

4.0.0

メジャー変更(下位互換性がありません)

  • # 3320データベースレイクタスクの Rails 依存関係を削除します。 (アーサー ニーズ)

    Rails を使用する場合、すべての db:* レイテンシ タスクは以前と同様に動作する必要があります。 Rails を使用していない場合は、次を使用してデータベース タスクのみをロードします。

    load 'mongoid/tasks/database.rake'
    
  • Mongoid 4は MongoDB 2.4.0以降のみをサポートするようになりました。

  • Document#metadata 一般的な競合を避けるために、 の名前がDocument#relation_metadataに変更されました。 関係プロキシでも、この名前は同じものに変更されます。

  • スコープとデフォルトのスコープはすべて、Lambda またはプロシージャ内で定義する必要があります。

  • skip_version_check 構成オプションが削除されました。

  • IdP が削除されました。 (アーサー ニーズ)

  • 負荷リワークの必要量の増加。 負荷により、関連ドキュメントを読み込むには ID マップが必要になりました。 プリローダーのセットは、.includes に渡された関連付けを早期ロードできます 使用して複数のドキュメントを挿入できます。 (アーサー ニーズ)

  • Mongoid は、コア ドライバーが提供する新しい読み込み設定(read preference)をサポートするようになりました。 これには以下が含まれます。

    • :primary: 常にプライマリ ノードから読み取ります。 (デフォルト)

    • :primary_preferred: 最初にプライマリを試行し、使用できない場合はセカンダリを試行します。

    • :secondary: 常にセカンダリ ノードから読み取ります。

    • :secondary_preferred: 最初にセカンダリを試行し、次にプライマリを使用できない場合はプライマリを試行します。

    • :nearest: レイテンシが最も低いノードからの読み取りを試みます。

    サンプル構文:

    Person.with(read: :secondary).first
    

    :consistencyオプションは有効ではなくなりました。現在は:readオプションを使用しています。

  • Mongoid はすべての書込み (write) がデフォルトで伝達されるようになりました(以前は「セーフ モード」)し、伝達セマンティクスも変更しました。

    • { w: -1 }: 書き込みを検証せず、ネットワークエラーが発生しません。

    • { w: 0 }: 書き込みを検証しないため、ネットワークエラーが発生します。

    • { w: 1 }: プライマリ ノードの書込みを確認します。 (デフォルト)

    • { w: n }: n 個のノードへの書込みを検証します。

    • { w: "majority" }: 過半数のノードに対する書込みを検証します。

    サンプル構文:

    Person.with(write: {w: :majority}).create!(name: "John")
    

    :safeオプションは有効ではなくなり、 :writeオプションは使用できなくなりました。

  • # 3230配列フィールドとハッシュ フィールドでは、値を許可するのではなく、正しい型が設定されていることを検証するようになりました (ロド以上)

  • # 3043 /# 2949永続性オプションの内部で再作業します。 (アーサー ニーズ)

  • Mongoid にはアクティブなモデル4以上が必要になりました。

  • Document#set が、以前の(field, value)引数ではなく、ハッシュの形式で複数の属性を受け入れるようになりました。 この操作では、フィールド エイリアスと タイプキャスト もサポートされるようになりました。

    document.set(name: "Photek", likes: 10000)
    
  • Document#rename が、以前の(field, value)引数ではなく、ハッシュの形式で複数の属性を受け入れるようになりました。 フィールド エイリアスがサポートされています。

    document.rename(first_name: "fn", last_name: "ln")
    
  • Document#inc は、以前は一度に 1 つの値しか増加できなかったが、ハッシュの形式で複数の属性を受け入れるようになりました。 エイリアスと直列化がサポートされています。

    document.inc(score: 10, place: -1, lives: -10)
    
  • Document#pop は、以前は一度に 1 つの値しか書き込みできなかったのに、ハッシュの形式で複数の属性を受け入れるようになりました。 エイリアスと直列化がサポートされています。

    document.pop(names: 1, aliases: -1)
    
  • Document#bit は、以前は一度に 1 セットの操作しか適用できなかったのに、ハッシュの形式で複数の属性を受け入れるようになりました。 エイリアスと直列化がサポートされています。

    document.bit(age: { and: 13 }, score: { or: 13 })
    
  • Document#pull は、以前は一度に 1 つの値しかプルできなかったが、ハッシュの形式で複数の属性を受け入れるようになりました。 エイリアスと直列化がサポートされています。

    document.pull(names: "James", aliases: "007")
    
  • Document#pull_all は、以前は一度に 1 つの値しかプルできなかったが、ハッシュの形式で複数の属性を受け入れるようになりました。 エイリアスと直列化がサポートされています。

    document.pull_all(names: ["James", "Bond"], aliases: ["007"])
    
  • Document#push_all は MongoDB 2.4で非推奨となり、削除されました。 代わりにDocument.pushを使用してください。

  • Document#push は、ハッシュの形式で複数の属性を受け入れるようになり、$each と $push を介してフィールドに単一の値または複数の値のプッシュを処理できるようになりました。 エイリアスと直列化がサポートされています。

    document.push(names: "James", aliases: [ "007", "Jim" ])
    
  • Document#add_to_set がハッシュの形式で複数の属性を受け入れるようになり、エイリアスと直列化がサポートされるようになりました。

    document.add_to_set(names: "James", aliases: "007")
    
  • アトミック操作 API の基準が変更され、単一ドキュメント アトミック API の変更に合わせて変更が行われるようになりました。

    Band.where(name: "Depeche Mode").inc(likes: 10, followers: 20)
    
  • # 3399の作成と の作成関係 では、一度に複数のドキュメントを作成するための最初のパラメーターとして属性の配列を指定できるようになりました。

    person.addresses.create([{ street: "Bond" }, { street: "Upper" }])
    person.addresses.create!([{ street: "Bond" }, { street: "Upper" }])
    
  • # 3141 rake db:test:prepareは、Mongoid が環境内で唯一の ODM/ORM である場合、定義されたすべてのインデックスを設定するようになりました。

  • # 3138 update_attributesは、 updateを呼び出すだけでアクセスできるようになりました。

  • # 3083新しいレイテンシ タスク: rake db:mongoid:remove_undefined_indexesは、モデルで明示的に定義されていないインデックスをデータベースから削除するために追加されました。 (エイリアスフィールドマン)

  • # 3029多形関係を持つ単一のユースケースに追加されるrelation_fieldフィールドは削除されました。 したがって、次の操作が必要になる前に機能します。

    class Eye
      include Mongoid::Document
      belongs_to :eyeable, polymorphic: true
    end
    
    class Face
      include Mongoid::Document
      has_one :left_eye, class_name: "Eye", as: :eyeable
      has_one :right_eye, class_name: "Eye", as: :eyeable
    end
    

    これは(適切な移行を行い)としてモデル化する必要があります。

    class Eye
      include Mongoid::Document
      belongs_to :left_socket, class_name: "Face", inverse_of: :left_eye
      belongs_to :right_socket, class_name: "Face", inverse_of: :right_eye
    end
    
    class Face
      include Mongoid::Document
      has_one :left_eye, class_name: "Eye", inverse_of: :left_socket
      has_one :right_eye, class_name: "Eye", inverse_of: :right_socket
    end
    
  • # 3075 update_attributeが、 write_attributeを使用する代わりに setter メソッドを適切に呼び出すようになりました

  • # 3060アトミックなブロックを許可して、同じタイプの複数の呼び出しを許可します。 (ブライアン ノートン)

  • # 3037モデル インデックスはモデルクラスのindex_optionsハッシュに保存されなくなりました。 代わりに、 Indexable::Specificationオブジェクトのリストを含むクラスにindex_specificationsという名前の配列が存在するようになりました。 これにより、キーは同じであるが順序が異なるインデックスの場合に適切に処理できるようになりました。

  • クエリの2956キャッシュは、 cacheが具体的に呼び出された場合にのみ発生するようになりました。 (アーサー ニーズ)

  • # 2659 Mongoid::Railtieは適切に 1 つの初期化子のみを使用するようになり、名前はmongoid.load-configに変更されました。

  • # 2656 rake db:reseedrake db:resetになりました(アーティッド インデックス)

  • 他のライブラリが一般的に使用するクラスでグローバル名前空間が損なわれるのを避けるために、# 2648 BooleanMongoid::Booleanになります。

  • # 2603 setter からの戻り値は、setter を呼び出すか送信を使用するかに関係なく、常に設定された値になるようになりました。

  • # 2597 Mongoid::Observerは Rails 4と並行して削除されました。

  • # 2563動的フィールドはモデルごとのレベルで許可されるようになったため、 allow_dynamic_fields構成オプションは削除されました。 モデルで動的フィールドを使用できるようにするには、単純にそれぞれに モジュールを含めます。 (ジョブ マーイン)

    class Band
      include Mongoid::Document
      include Mongoid::Attributes::Dynamic
    end
    
  • #2497 to_jsonを呼び出してもドライバーからの戻り値が変更されなくなり、以前の{ "$oid" : object_id.to_s } string 表現だけでなく が適切に返されます。

  • # 2433 Mongoid::Paranoiaは削除されました。

  • # 2432 Mongoid::Versioningは削除されました。

  • # 2218デフォルトのスコープを持つドキュメントを作成またはインスタンス化すると、スコープが複雑でない場合、そのドキュメントにデフォルトのスコープが適用されるようになりました。

  • # 2200の一括割り当てセキュリティで、Rails 4の動作がミラーリングされるようになりました。 without_protectionオプションも削除されました。 attr_accessibleクラス メソッドが削除されました。 Mongoid および String パラメーターは、一括割り当ての保護に正常に機能する必要があります。

  • delete_alldestroy_all:conditionsハッシュではなく、未加工の属性のみを対象とするようになりました。

  • # 1908ドキュメントは、 #onlyまたは#withoutを使用して基準から読み込まれるようになりました。これらのレコードを保存、更新、または削除しようとすると、エラーが発生するようになりました。 さらに、データベースから検索されたフィールドから除外されたフィールドも、それらにアクセスしようとする際に例外を発生させます。

  • # 1344アトミックな更新がatomicallyブロックで実行できるようになりました。これにより、ブロックが完了するまで、ブロックが呼び出されたドキュメントのアトミックな更新が遅延します。

    更新呼び出しは、ブロックで通常どおり実行できます。

    document.atomically do
      document.inc(likes: 10)
      document.bit(members: { and: 10 })
      document.set(name: "Photek")
    end
    

    ドキュメントもブロックに与えられます。

    document.atomically do |doc|
      doc.inc(likes: 10)
      doc.bit(members: { and: 10 })
      doc.set(name: "Photek")
    end
    

    アトミック コマンドには次のようなスムーズなインターフェースがあります。

    document.atomically do |doc|
      doc.inc(likes: 10).bit(members: { and: 10 }).set(name: "Photek")
    end
    

    atomicallyブロックなしで浮動小数インターフェースを活用する場合、操作は個々の呼び出しで保持されます。 たとえば、次の例では、ブロックが提供されていない状態でデータベースが3回ヒットします。

    doc.inc(likes: 10).bit(members: { and: 10 }).set(name: "Photek")
    

    ブロックは一度に1ドキュメントにのみ適しているため、埋め込みドキュメントとルート ドキュメントの更新を混在させることはできません。

新機能

  • Mongoid は ActiveSupport::LogSubscripter を使用してログをサブスクライブし、ActiveSupport::Notifications を使用して操作ログを送信するようになりました。 (アーサー ネイティブ) ログ サブスクライブの例:

    ActiveSupport::Notifications.subscribe("query.Moped") do |event| .. 終了

  • フィールド タイプでは、クラス名だけでなくシンボルも使用できるようになりました。 使用可能なマッピングについては、github.com/mongoid/mongoid/lob/ Master/lib/mongoid/ fields.rb#L 16を参照してください。

  • # 3580フィールドは、次の メソッドを使用してデフォルト値にリセットできるようになりました。

    document.reset_name_to_default!

  • # 3513ドキュメントには、破棄コールバックで誤った値が返された場合にMongoid::Errors::DocumentNotDestroyedエラーを発生させる#destroy!メソッドが追加されました。

  • # 3496クラス レベルと基準レベルfind_or_create_by!を追加しました。

  • # 3479 map/reduce は、出力がインラインでない場合、タイムアウト オプションのない基準を尊重するようになりました。

  • # 3478 Criteria オブジェクトには #none メソッドが追加されました。これにより、基準はデータベースにヒットすることなく、ドキュメントは常にゼロになります。

    Bun.none Bun.none.where(name: "Tool") # は常にゼロドキュメントを持ちます。

  • # 3410 Mongoid に、Rack アプリケーションでミドルウェアとして使用できるクエリ キャッシュが追加されました。 (アーサー ニーズ)

    Rails の場合:

    config.middleware.use(Mongoid::QueryCache::ミドルウェア)

  • # 3319カウンターはドキュメント インスタンスからリセットできるようになりました。

    document.reset_counters(:relation)

  • 3310 embedded_in 関係は、親を更新するためにtouchオプションを受け入れるようになりました。

  • alias_attributeを使用した # 3302のエイリアスが、基準内のエイリアスを適切に処理できるようになりました。

  • # 3155範囲フィールドは指定された場合、exclude_end を永続化します。 (リバロール)

  • # 3146 :overwrite フィールド オプションを追加すると、true の場合、重複がチェックされなくなります。 (リバロール)

  • # 3002 Rails コンソールを再読み込みすると、Mongoid の ID マップもクリアされるようになりました。

  • # 2938構成オプションduplicate_fields_exceptionが追加されました。これをtrueに設定すると、既存のメソッドを上書きするフィールドを定義するときに例外が発生します。 (アーサー ニーズ)

  • #2924 MongoDB 2.4 betaテキスト検索では、Mongoid が提供する DSL が提供されるようになりました。 他のクエリと同様に、テキスト検索は遅延評価され、 クラスまたは条件レベルから取得できます。

    text_searchメソッドを提供する3シャードパーティ gem は Mongoid では動作しなくなるため、構文を変更する必要があることに注意してください。 例:

    Band.text_search("mode").project(name: 1).each do |doc|
      # ...
    end
    
    Band.limit(10).text_search("phase").language("latin")
    Band.where(:likes.gt => 1000).text_search("lucy")
    
  • # 2855関係に複数の拡張機能を提供できるようになりました (リバロール)

解決された問題

  • # 3676埋め込み関連付けで認証を取得するようになりました(アーティッド ゾーン)

  • # 2898ダーティ属性メソッドがフィールド エイリアスを適切に処理できるようになりました。 (NI値(ゼロ))

  • # 3620 ActiveModel モジュール インスタンス メソッドを禁止された_methods リストに追加します。 (アーサー ニーズ)

  • # 3610読み取り専用属性ではアトミック操作は許可されません(Frederco Araujo)

  • # 3619破棄フラグ付きのドキュメントは検証しないでください。 (Cri向上 J. Bottar)

  • # 3617定期ドキュメントのインデックス作成をスキップしないでください。 (シャーカー)

  • # 3568存在するローカライズされたフィールドでの属性エラーを修正しました。

  • # 3514最初と最後の呼び出しで機能するクエリ キャッシュを修正しました。

  • # 3383 /# 3495を修正しました has_and_belongs_to_many 早期ロードを修正しました。 (アーサー ニーズ)

  • # 3492 $rename 操作では 値を mongoize しないでください。 (Validlas プロジェクト プロジェクト)

  • # 3490ローカライズされたフィールドでブール値false値を操作できるようにします。

  • # 3487フィールド定義でブール値を Mongoid::ブール値にマップする。 (アーサー ニーズ)

  • # 3449操作は作成と更新に機能する必要があります。 (グレゴリオ ローテーション多数)

  • # 3347埋め込み関係のスコープからドキュメントを作成すると、作成された子に親ドキュメントが適切に設定されるようになりました。

  • # 3432 DateTime の精度が失われる mongos 化を修正しました。

  • # 3397埋め込みドキュメント用の $ne マッパーをサーバーの動作と一致するように修正しました。

  • # 3352 「open」という名前の名前付きスコープが1 -n の関係を介して動作することを許可します。

  • # 3348同じキーを含む方向が異なる複合インデックスを修正します。 (アーサー ニーズ)

  • # 2701 include_to バインディングに関する余計なクエリを修正しました。 (アーサー ニーズ)

  • # 3089文字列を浮動小数点数にデーモン化できるようになりました(Danial Liger)

  • # 3278カウンター キャッシュはメモリ内のドキュメントもアップデートする必要があります。 (アーサー ニーズ)

  • # 3242 Has_many の関係では、逆の foreign_key を使用する必要があります。 (アーサー ニーズ)

  • #3233 子を連結し、関係検証がオンになっている場合、検証コールバックをdoubleに呼び出さないようにします。

  • # 3197ルート コレクションと埋め込みコレクションでのaggregatesへの呼び出しを改善しました。 (WOJC)

  • # 3144 /# 3219 @_fielden Ivar での名前の競合を修正しました。 (アーサー ニーズ)

  • # 3088範囲フィールドはハッシュを受け入れることができます。これは db の 属性となる可能性があります。 (リバロール)

  • # 3116の関係インスタンス変数は、すべて_のプレフィックスを持つようになりました。

  • # 3093配列をアトミックにプッシュする場合にのみ1レベルをフラット化します。

  • # 3063 Document#becomesがエラー時に基本オブジェクトを適切に設定するようになりました (アダム・クロス・コーエン)

  • ドキュメントが永続化されていない場合、# 3019アトミック操作は永続化を試行しなくなりました。

  • # 2903未使用の string to_a拡張機能を削除しました。

3.1.7

解決された問題

  • # 3465 inverse_ of が nil に設定されている場合のあいまいな関係エラーを修正しました。

  • # 3414バックポート スキップと集計のオプションを制限します (WOJC)

  • # 3469を修正: メモリ /./ を .hash_dot_syntax で割り当てに失敗しました(Dmitry Klasnouk Atlas)

3.1.6

解決された問題

  • # 3337ローカライズされたフィールド マップが継承を使用してクローンされていることを確認します。

  • # 3262 HatM 外部キー フィールドでのアトミック配列操作で、単一の要素が配列に変換される問題を修正しました。

  • # 3282 .timeless を修正しました オプションを使用すると、クラス属性の代わりにスレッド ローカルを使用できます。 また、すべてのDocsからタイムレス メソッドを削除し、タイムスタンプDocsにのみ追加します。 (アーサー ニーズ)

3.1.5

解決された問題

  • 3231 Atlas のプロキシ ドキュメントの展開が基準内で機能するようになりました。

  • # 3247 zinfo の依存関係を0.3.29にアップグレードします

  • # 3203多形関係のindex: true仕様を修正しました

  • # 3192のエイリアス フィールドとローカライズされたフィールドの組み合わせを検証付きで修正しました。 (ジャーナリング フィールド)

  • # 3173カスタム プライマリキーとの多対多の関係に関する問題を修正しました。 (バウンド 日曜日)

  • # 3159アップサートによって、ドキュメントが永続化されているとして適切にフラグが付けられるようになりました。

  • # 3137 ID を使用して複数のbelongs_toセットを連続して許可します。

  • 3079パラメータ:Docs 親が_id である埋め込み は、正しく保存されていないため、db から再読み込みするときに が失われる問題を修正しました。値。 (アーサー ニーズ)

  • # 3081条件のmethod_missingは、 NoMethodErrorが発生する場合にデータベースにヒットしないようにするために、エントリを呼び出す前に、配列が指定された メソッドに応答するかどうかを確認するようになりました。

  • 番号3068 MONGOID_SPEC_PORTが設定されている場合に非標準の MongoDB ポートで指定が実行される問題を修正しました。

  • # 3047 blank?empty?が条件に欠落しているメソッドに該当しないようにします。

  • が短いタイムスタンプであっても、cache_key に update_at が含まれるようになりました(Atlas Triggers)。

3.1.4

解決された問題

  • # 3044ケース ステートメントで、列挙可能なターゲットが配列と一致するようにします。

  • 基準にある# 3034 first_or_createは、ドキュメントの作成後に呼び出す代わりに、作成するブロックを適切に渡すようになりました。

  • # 3021初期化式からmongoid.yml警告を削除しました。これは セッション構成オプションによって処理されるようになりました。

  • # 3018一意性バリデーターは、チェックの値を適切に直列化するようになりました。 (ジャーリー・クライアント)

  • # 3011一意性検証のためのエイリアス フィールドのサポートを修正しました。 (ジャーナリング フィールド)

  • # 3008クラスの読み込み後にスコープが追加されたときに、サブクラスがスコープを正しく継承できない問題を修正しました。 (マイクロ ディレクティブ)

  • # 2991 Document.timelessのスコープがスレッドではなく インスタンスに適切になるようになりました

  • # 2980動的フィールドがハッシュと配列のインプレース編集を適切に処理できるようになりました (マタージョン)

  • # 2979 pluckはコンテキストをその場で変更しなくなりました。 (ブール値)

  • # 2970関係の名前を使用可能な場合は 、存在しない場合は 2 番目の逆クラス名を適切に使用するようにカウンター キャッシュを修正しました。

  • # 2959ネストされた属性は、関係で定義されている場合はautosave: falseを尊重するようになりました。

  • # 2944大文字と小文字が区別されない場合のローカライズされたフィールドの一意の検証を修正しました。 (ウィジェット)

3.1.3

解決された問題

  • メソッドを呼び出した後に保存するときに、埋め込みドキュメントを重複させないようにしました。 (アーサー ニーズ)

  • # 2961 mongoid.yml 構成を再読み込みすると、以前に構成されたセッションが適切にクリアされるようになりました。

  • # 2937カウントは、スキップと制限を考慮するためにtrue引数を取ることができるようになりました。 (アーサー ニーズ)

  • # 2921継承が機能していない場合は、ID マップ選択で タイプを使用しないでください。 (アーサー ニーズ)

  • # 2893コレクション名とデータベース名のメモリ化を排除し、 store_inの Lambda が変更時に適切に動作するようにしました。

  • ネストされた属性を処理する際の1 -n 関係の2911 _destroy属性が、配列を渡されると string または記号になるようになりました。

  • # 2886 Rails ジェネレーターの名前空間の問題を修正しました。

  • # 2885エイリアス フィールドのアクセスを修正しました。 (NI値(ゼロ))

  • # 2883循環関係が混合関係エラーを発生させないようにします。

  • # 2867 pluckが エイリアス フィールドを適切に処理できるようになりました。

  • # 2862自動保存によって余計なクエリが実行されなくなりました。 (アーサー ニーズ)

3.1.2

解決された問題

  • # 2851 NaN 値のビッグDecimal によるデモ化を修正しました。 (nkm)

  • # 2848短いタイムスタンプを使用する際にtouchが動作するように修正しました。 (アーサー ニーズ)

  • # 2840エンドツーエンドのno_timeoutオプション処理を修正しました。

  • # 2826動的フィールドが適切に mongoized されるようになりました

  • 2822の関係のマーシャリング負荷が拡張機能を適切に再適用するようになりました

3.1.1

解決された問題

  • # 2839数値バリデーターを除く、型キャスト値を使用するように検証を修正しました。 (レイテンシ)

  • # 2838 store_inオプションが上書きされるのではなく、適切にマージされるようになりました (Colin Mackenzy)

3.1.0

新機能

  • 集計フレームワークに依存するようになりました、MongoDB の最小要件は2.2に引き上げられました。

  • アクティブ モデルとアクティブ サポートの最小依存関係が3.2に引き上げられました。

  • # 2809関係では、外部キーの ID の代わりに、使用するプライマリキーを指定できるようになりました。

    class Person
      include Mongoid::Document
      field :username, type: String
      has_many :cats, primary_key: "username"
    end
    
    class Cat
      include Mongoid::Document
      belongs_to :person, primary_key: "username"
    end
    
  • 2804 $geoNear のサポートが基準に追加されました。

    Bar.where(:likes.gt => 1000).geo_near([ 52, 13 ])
    Bar.geo_near([ 52, 13 ]).max_distance(0.5).spherical
    
  • # 2799 Criteria#map で、フィールド名のシンボルと、より最適化されたmapを実行するためのブロックが受け入れられるようになりました。 (ゴシャ アラート)

    Band.where(:likes.gt => 1000).map(:name)
    
  • 2798集計( summinmaxavg )は、map/reduce の代わりに集計フレームワークを使用するようになりました。 (ゴシャ アラート)

  • # 2776 MongoDB 2.4 .x 新しいインデックス タイプがサポートされるようになりました。" 2 dsphere"、"text"、"hashed") (イテラブル)

  • From からの # 2767 $maxScan サポートがサポートされるようになりました (ジョブない)

  • # 2701は、 1 - 1の関係を持つ過剰なデータベース クエリをクリーンアップします。

  • # 2693カスタムコレクション名はモデル ジェネレーターに渡すことができます。 (サブハッシュ バーシャー値)

    rails g model band --collection=artists
    
  • # 2688 Model.createModel.create!が属性ハッシュの配列を指定して、一度に複数のドキュメントを作成できるようになりました 属性の配列が指定された場合、ドキュメントの配列が返されます。

    Band.create([{ name: "Tool" }, { name: "Placebo" }])
    Band.create!([{ name: "Tool" }, { name: "Placebo" }])
    
  • # 2670フィールドの設定を解除すると、 1のみではなく複数のフィールドが受け入れられるようになりました。 (アーサー ニーズ)

    band.unset(:name, :founded)
    Band.where(name: "Placebo").unset(:members, :origin)
    
  • # 2669 Criteria#newにブロックを渡すと、ブロックがモデルのコンストラクターに適切に送信されるようになりました。 (アーサー ニーズ)

  • メモリに必要な情報がある場合、# 2667 exists?はデータベースにヒットしなくなりました。

  • # 2665 Mongoid がbelongs_to関係のカウンター キャッシュをサポートするようになりました (アーサー ニーズ)

    class Band
      include Mongoid::Document
      belongs_to :label, counter_cache: "b_count"
    end
    
    class Album
      include Mongoid::Document
      belongs_to :band, counter_cache: true
    end
    
  • # 2662 belongs_toの関係を持つ埋め込みドキュメントは、それらを早期ロードできるようになりました

  • # 2657 Logger getter と setter ConvenientメソッドがConfigモジュールに追加されました。 (アーサー ニーズ)

  • # 2615インデックスがデフォルト以外のデータベースにのみ存在する場合、 インデックス オプションは特定のデータベース名を指定できるようになりました。

    class Band
      include Mongoid::Document
      index name: 1, { database: "another_db" }
    end
    
  • # 2613 Pros を値としてstore_inに提供できるようになりました

    class Band
      include Mongoid::Document
      store_in database: ->{ Thread.current[:database] }
    end
    
  • クエリに2609オプションを渡します。 (マーチン マテリアライズド)

  • ドキュメント ID が ハッシュ タイプの場合に、 findにハッシュを渡すことで、 2555が適切に機能するようになりました。 (Szymon Kubernetes)

  • # 2545 $は、適切な場合、 1レベルの深くネストされている埋め込みドキュメントの更新セレクターに使用されます。

  • # 2539 Mongoid.modelsがアプリケーション内のすべてのモデルを追跡するようになりました (アラート)

  • # 2525エイリアスを持つ短いタイムスタンプ付きフィールドを作成する機能を追加しました。 これにより、タイムスタンプ フィールドがc_atu_atとして設定され、便宜上created_atupdated_atともエイリアスになります。 (ロド以上)

    class Band
      include Mongoid::Document
      include Mongoid::Timestamps::Short # For c_at and u_at.
    end
    
    class Band
      include Mongoid::Document
      include Mongoid::Timestamps::Created::Short # For c_at only.
    end
    
    class Band
      include Mongoid::Document
      include Mongoid::Timestamps::Updated::Short # For u_at only.
    end
    
  • # 2465ドキュメントには、検証を適切に処理するためのattribute_before_type_castが付属するようになりました。 (ガベージ)

  • # 2443 expire_after_secondsは有効なインデックス オプションになりました( www.mongodb.com/ja-jp/docs/manual/core/indexs/#tl-indexswww.mongodb.com/ja-jp/docs/manager/tuned/expire-data /)。

    class Event
      include Mongoid::Document
      field :created_at, type: DateTime
      index({ created_at: 1 }, { expire_after_seconds: 3600 })
    end
    
  • 子ドキュメントが作成または破棄されると、 touch: trueオプションとの # 2373関係が自動的に検出されるようになりました。

  • Document.first_or_create!Criteria#first_or_create!を追加しました。 これにより、作成が検証に失敗した場合は検証エラーが発生します。

    Band.where(name: "Depeche Mode").first_or_create!
    Band.where(name: "Tool").first_or_create!(active: true)
    
  • Document.first_or_initializeCriteria#first_or_initializeを追加しました。 これはfirst_or_createと同じですが、見つからない場合は新しい(非永続)ドキュメントを初期化します。

    Band.where(name: "Depeche Mode").first_or_initialize
    Band.where(name: "Tool").first_or_initialize(active: true)
    
  • 指定されたフィールドの値の配列を返すアクティブ レコードと同様に、 Model.pluckCriteria#pluckを追加しました。 (Jason リー)

    Band.where(name: "Depeche Mode").pluck(:_id)
    Band.where(name: "Tool").pluck(:likes)
    
  • # 2324の多くの関係の埋め込みがdelete_ifを適切に処理できるようになりました

  • # 2317 Document.first_or_createCriteria#first_or_createを追加しました。 これにより、最初に一致するドキュメントが返されます。存在しない場合は、追加の属性を持つドキュメントが作成されます。 ( )

    Band.where(name: "Depeche Mode").first_or_create
    Band.where(name: "Tool").first_or_create(active: true)
    
  • #2292 にModel.each_with_index を追加しました。

  • # 2285 Config.load_configurationは、ハッシュから設定を直接インスタンス化するユーザー向けに公開されています。

  • # 2275が Rake タスクdb:mongoid:purgeを追加し、デフォルトのデータベース内のシステム コレクションを除くすべてのコレクションを削除します。

  • データベースからドキュメントが返された場合の# 2257 after_findコールバックが追加されました。

    class Band
      include Mongoid::Document
    
      after_find do |doc|
        # Some logic here.
      end
    end
    
  • #2223 が Model.for_js 経由でJavaScriptインジェクションから保護されているパラメータを持つドキュメントをJavaScriptで検索できるようにします。

    Band.for_js("this.name = param", param: "Tool")
    Band.where(:likes.gt => 1000).for_js("this.likes < this.follows")
    
  • # 2197ポートなしのセッション構成を提供する場合、Mongoid はこれらをデフォルトで27017に設定するようになりました。

  • # 2180 1 -n と nn の関係で、追加または削除のコールバックの前後がサポートされるようになりました (ロド以上)

    class Band
      include Mongoid::Document
    
      embeds_many :albums, after_add: :notify_labels
      has_many :followers, before_remove: ->(band, follower){ notify_unfollow(follower) }
    end
    
  • フィールドが定義されている場合、# 2157 Criteria#updateCriteria#update_allはフィールドタイプに従って値を直列化するようになりました。

  • # 2022カスタム コールバックは、 observableマイクロを使用して、自分自身を観察できるように登録できるようになりました。

    class Band
      include Mongoid::Document
    
      define_model_callbacks :notification
      observable :notification
    end
    
    class BandObserver < Mongoid::Observer
    
      def before_notification(band)
        #...
      end
    
      def after_notification(band)
        #...
      end
    end
    
  • # 1766外部キーが空の配列の場合、多対多の関係はデータベースにアクセスしません。

  • # 1564多対多の外部キーでは、関係がアクセスされた場合にのみ遅延してデフォルトが設定されるようになりました。 これにより、関係が変更されていない場合に空の配列が保存されるのを回避できます。

解決された問題

  • # 2730コンテキストで sort を呼び出すと、コンテキストの基準が適切に更新されます。 (アーサー ニーズ)

  • # 2719 distinctがクラス レベルで利用できるようになりました

    Band.distinct(:name)
    
  • # 2714新しいセッションに別のデータベースがあるときにセッションを上書きすると、実行時に もデータベースが適切に切り替えられるようになりました。

  • # 2697同じクラスから継承する複数のモデルを含める場合の読み込みが速くなりました。 (強制終了の結果)

  • # 2664メモリ内での埋め込みドキュメントのソートが、複数のフィールドが指定されている場合に適切に動作するようになりました。 (フリードマンより)

3.0.24

解決された問題

  • 新しいドキュメントの# 2879 remove_attributeでは、不要な $unset 操作が作成されなくなりました。

3.0.23

解決された問題

  • # 2851 NaN 値のビッグDecimal によるデモ化を修正しました。 (nkm)

  • # 2841親更新の途中で多くの埋め込みに対してdelete_allまたはdestroy_allを呼び出すと、削除が適切に実行されるようになりました。 (アーサー ニーズ)

  • # 2835一意性バリデーターの永続性オプションのクリアを修正しました。

  • # 2826動的フィールドが適切に mongoized されるようになりました

  • 2822の関係のマーシャリング負荷が拡張機能を適切に再適用するようになりました

  • # 2821自動保存された関係は、継承クラスで実行する必要があります。

3.0.22

解決された問題

  • # 2812基本ドキュメントが破棄され、外部キーがまだ遅延評価されていない場合の多対多の関係の基準を修正しました。

  • # 2796削除を使用して割り当てるときに、has_many 関係の変更をカスケードしないでください。

  • # 2795時間変換の精度を修正しました。 (Tomdebrew)

  • # 2794検証のために関係を読み取るときに、自動構築を しない でください。

  • # 2790 becomesは、一括割り当てで保護されている場合でも埋め込みドキュメントをコピーするようになりました。

  • # 2787 ID マップ内のドキュメントを置き換えるには、 becomesを許可します。

  • # 2786破棄する際に回帰するカスケードコールバックが起動しない問題を修正しました。

  • # 2784一意性検証がサブクラスに適切に追加されるようになりました。 (合間の)

3.0.21

解決された問題

  • # 2781 / * # 2777 - Rails 環境でのみ存在していたDateTimeの直列化に関する問題を修正しました。

3.0.20

解決された問題

  • # 2774一意性、存在性、関連性の検証マイクロがインスタンス レベルでも使用できるようにします。

  • # 2772ドキュメントのクローン時に、ローカライズされたフィールドが適切に処理されるようになりました。

  • クラスを定数化できない場合でも、 2758 Mongoid.create_indexesは失敗しません。 (アーサー ニーズ)

  • 修正をロードするときに、# 2743永続性オプションがクリアされなくなりました。 (アーサー ニーズ)

  • # 2741 MRI と JRuby で使用される mongoization の丸めエラーを修正しました。

  • # 2740ドット表記でread_attributeを使用する場合、ハッシュ フィールド内の整数キーをサポートします。

  • # 2739整数逆直列化が整数に適切にキャストされるようにします。

  • ドキュメントがすでに永続化されている場合、 2733とinverse_of: nilとの多対多の関係は、 <<またはpushで逆関係を永続化しません。

  • # 2705子を段階的なコールバック リストに追加できるタイミングに関するロジックを修正しました。

3.0.19

解決された問題

  • # 2703の変更を元に戻すためにリリースされました。

3.0.18

解決された問題

  • # 2707連鎖された条件またはスコープを持つ関係からfind_or_create_byまたはfind_by_initialize_byを呼び出すと、新しいドキュメントまたは見つかったドキュメントの関係が適切に保持されるようになりました。

  • # 2699フィールドをリセットすると、変更された属性リストから名前が削除されるようになりました。 (サブハッシュ バーシャー値)

  • # 2683基準からアトミック操作を実行するときに、エイリアス フィールドがサポートされるようになりました (アーサー ニーズ)

  • # 2678一致するドキュメントなしでCriteria#sumを呼び出すと、 nilではなく0が返されます。

  • # 2671マッチャーがシンボル キーを正しく処理できるようになりました。 (ジョブない)

3.0.17

解決された問題

  • # 2686壊れた Moped 依存関係を修正しました - Moped は少なくともバージョン1.2.0である必要があります。

3.0.16

解決された問題

  • # 2661ドキュメントのインスタンス レベルmodel_nameを実装します。

  • # 2651 Criteria#typeがセレクター内のシンボルキーと string キーの両方で適切に動作することを確認します。

  • # 2647パラノード ドキュメントのdeleted?destroyed?が同じ値を返すようにします。

  • # 2646ブロックに中断する前に、列挙可能なターゲットにアンロードされたドキュメントをメモリ内に設定します。

  • # 2645カウントを要求するときは、キャッシュを考慮する必要があります。 (アーティッド ルール ネーム)

  • # 2642埋め込みドキュメントで空の配列をバッチ処理しないでください。 (Laszlo Bacsi)

  • # 2639は、新しいレコードから関係を構築するときに、新しいレコードに対して不要なクエリを実行しないようにします。

  • # 2638基準が早期読み込みされている場合、 firstまたはlastを呼び出してから結果全体を適切に反復処理すると、完全なリクエストが適切に早期読み込みされます。

  • #2618 一意性を検証する際に、デフォルトで常にstring整合性が使用されるようになりました。

  • # 2564関係 getter がオーバーライドされ、そのメソッドから setter が呼び出される場合の無限再帰を修正しました。

  • # 2554 embeds_manyunscopedに破棄フラグが付けられたドキュメントが含まれていないようにします。

3.0.15

解決された問題

  • # 2630メタデータは存在するが、カスケードが定義されていない場合は、カスケードを修正します。

  • # 2625プロキシと基準オブジェクトのMarshal.dumpMarshal.loadを修正しました。

  • # 2619カスタム モデルを監視しているときにオブジェクトでobserved_classesによって返されるクラスを修正しました。

  • # 2612 DocumentNotFoundエラーが発生すると、エラー インスタンス内の クラスが公開されるようになりました。

  • # 2610並べ替えオプションを持つlastの後にfirstを呼び出すと並べ替えがリセットされるようにします。

  • # 2604プルとプッシュで競合する更新を確認します。 (ルーチン ソーザ)

  • # 2600マルチパラメータ属性を使用する場合、属性の適切なクラスタイプをインスタンス化します。 (xswingXX)

  • #2598 埋め込まれたDocsを持つローカライズされたフィールドの並べ替えを修正しました。

  • # 2588無効 Ruby メソッドとなる動的属性のメソッドの定義をブロックします。 (マテリアライズド)

  • # 2587関係のアンロード条件をリセットするときに、 belongs_toプロキシとのメソッド クラッシュを修正しました。

  • # 2585セッション構成オプションがシンボルとして Moped に渡されるようにします。

  • # 2584の出力がinlineに設定されている場合に、セカンダリで map/reduce を操作できるようにします。

  • # 2582 nilセッションの上書きによって がnilという名前のセッションにアクセスしないようにしてください。

  • # 2581ドキュメントの再読み込み時に強力な整合性を使用します。 (マーク カーマー)

3.0.14

解決された問題

  • # 2575浮動小数点数は使用状況を処理するのに十分な正確性ではないため、月末日が切り捨てられないようにします。 (ステイル)

  • # 2573メッセージの検査に i 18 n を使用しないでください。

  • # 2571ロケールから空白のエラーメッセージを排除しました。 (JS)

  • # 2568スコープも指定されている場合のレイテンシフィールドの一意性検証を修正しました。

  • # 2552埋め込みドキュメントがルート セレクターからパスを取得しようとすると、 InvalidPathエラーが発生するようにします。

3.0.13

解決された問題

  • # 2548 gem セット内の Unicode を使用して新しいアプリで構成ファイルを生成する際のエラーを修正しました。

3.0.12

解決された問題

  • # 2542 store_asを使用して埋め込みドキュメントを基準条件で適切にエイリアスできるようにします。

  • # 2541 Document#becomes経由でドキュメントをアップキャストまたはダウンキャストするときに、タイプの変更が正しいことを確認します( MongoDB Atlas)

  • 両方ともプロシージャでデフォルトを持つ親のフィールドを上書きするサブクラスのフィールドが、 2529のデフォルトを適切に上書きするようになりました。

  • # 2528エイリアス フィールドは、サブクラス化するときに重複させる必要があります。

  • #2527 を空の配列に設定すると、has_many 内のDocsの削除が複数の更新を実行するようになります。

3.0.11

解決された問題

  • # 2522クラスではなく条件を返すようにCriteria#withを修正しました

  • 2518乗数を使用する場合の ID マップの呼び出し数を修正しました。

  • # 2512複数のレベルが深い場合、 3.0.10で導入された遅延破棄でネストされた属性が破棄されるようにします。

  • # 2509返される値が空のハッシュである場合、ID マップで余分な時間が使用されないようにしました。 (ダウマーン)

3.0.10

解決された問題

  • #2507早期ロードにドキュメント を持つ親とDocsがない親が混在している場合に、余計な db ヒットが発生しないようにします。 (ダウマーン)

  • # 2505条件のupdateupdate_allがエイリアス フィールドを適切に処理できるようにします。 (Dmitry Klasnouk Atlas)

  • # 2504 Model#becomesは同じ ID を適切に保持します。

  • # 2498基準は提供されたブロックを適切に渡すようになりましたが、 method_missingは します。

  • # 2496以前は ID なしで保存されていた埋め込みドキュメントが適切に更新され、Mongoid 内から ID が割り当てられるようになりました。

  • # 2494すべての明示的なアトミック操作がエイリアス フィールドを適切に尊重するようになりました。

  • # 2493 model_nameがオーバーライドされている場合に多形タイプを設定するときに、 Class#model_nameではなくClass#nameを使用します。

  • # 2491バケット可能な子内の不要なマージ呼び出しを削除しました。

  • # 2485インデックスを削除すると、常に強力な整合性が使用されるようになりました。

  • # 2483のバージョン管理で、ローカライズされたフィールドが取り扱えるようになりました。 (ローレス カーネル)

  • # 2482はDocumentNotFoundエラーに検索パラメータを保存します。

  • #2481 map/reduce 集計では、カウント時に状態が渡される 100 のグループでmongoの reduce ジョブのバッチ処理が適切に処理されるようになりました。

  • # 2476 embedded_many 関係の範囲外のスキップと制限を正常に処理します。

  • 子がまだ読み込まれていない場合、# 2474は1 - 1の関係を正しくデタッチします。 (コストイン ステージング)

  • 埋め込みパラノード ドキュメントの # 2451 relation.deletedが再度正常に動作するようになりました。

  • # 2472埋め込み関係のupdate_allが、実際に更新されるものがない場合に適切に機能するようにします。

  • # 2469関係上の null ドキュメントを、メモリ インスタンス内の同じ で再追加できるようになりました

  • # 2454 Model#as_documentは、削除される関係に関係を持つ からの変更を適切に許可します。 (ジェームス・アーモンド)

  • # 2445 Mongoid ミドルウェアが通常の応答とストリーミング応答の両方を適切にサポートし、どちらの ID マップも適切にクリアされるようになりました。

  • # 2367ネストされた属性によって削除される埋め込みドキュメントは、親検証が失敗した場合でも、関係からすぐに削除されなくなります。 代わりに、破棄のフラグが付けられ、親が検証を渡して永続化されます。

これは動作の変更であることに注意してAPI Go。ただし、 が変更されず、以前の動作が正しくなく、AR と一致しなかったため、これをポイントリリースに含めることができました。

3.0.9

解決された問題

  • # 2463新しいリポジトリから壊れたrails g mongoid:configを修正しました。

  • # 2456ドキュメントが再度継承されると、子孫キャッシュがリセットされるようになりました。 (コストイン ステージング)

  • # 2453 Model#write_attributeが エイリアス フィールドで適切に動作するようになりました (Campbell Atlas)

  • # 2444余計なダーティ メソッド作成呼び出しを削除しました。 (コストイン ステージング)

  • # 2440 /# 2435ネストされた属性または埋め込みドキュメントで設定するときに、一括割り当てオプションを子に渡します。

  • # 2439返されたフィールドのスレッド選択におけるメモリリークを修正しました。 (ティルセット)

  • mongoid/moped# 82エイリアス フィールドがCriteria#distinctで動作するようになりました

  • # 2423基準以外で を使用するときに正しい $set を実行するように埋め込みドキュメントのupdate_allを修正しました。

  • # 2414インデックス定義はエイリアス フィールドを尊重するようになりました。

  • # 2413ブロックが提供されていない場合、 列挙可能なターゲットは 列挙型を適切に返すようになりました。 (アン値)

  • # 2411整数と浮動小数点数を mongos 化するときに、CloudDecimal フィールドは string として適切に保存されます。

  • # 2409プログラムで構成されている場合は、 mongoid.yml の欠落については警告しません。

  • # 2403ドキュメントがない埋め込みが多数ある場合のupdate_allで false を返します。

  • # 2401条件をハッシュでマージする機能を使用します。

  • # 2399 has_many Model#object_ids=の空白 ID 値を拒否します。 (Tigo Rapid Go)

  • # 2393多形関係を使用する場合はinverse_ofが尊重されるようにします。

  • # 2388 map/reduce は コマンドの実行においてorderbyではなくsortを適切に使用するようにします。 (アプレッサー)

  • # 2386インデックスで geo haystack および bits パラメーターを許可する。 (ハードウェア リージョン)

  • # 2380 Model#becomesがダーティ属性を適切にコピーするようになりました

  • #2331 after_create コールバックで余分な保存が呼び出される場合、子ドキュメントをdoubleプッシュしないでください。

3.0.8 (WiredTiger)

3.0.6

解決された問題

  • # 2375一意性検証のスコープ設定が エイリアス フィールドで動作するようになりました。

  • # 2372実行前に、すべてのアトミック操作が値をmongoizeすることを確認します。

  • # 2370 MongoDB ドキュメントは、 dependent: :restrictを使用しても適切に削除されず、例外が発生するようになりました。

  • # 2365 embedded_one を同じドキュメントで置き換える場合は、何も実行 しない でください。

  • # 2362必要ない場合、データベースに逆のフィールド値を保存しないでください。 (同じクラスに複数の多形親が定義されていない場合)。

  • # 2360ドキュメントの複製では、一括割り当て保護ルールを無視します。

  • # 2356 only経由でクエリで返されるフィールドを制限する場合は、制限の範囲がモデルに限定されていることを確認します。

  • # 2353 update_attributeがエイリアス フィールドを適切に処理できるようにします。

  • # 2348 string を時間に変換すると、string が無効な場合は引数エラーが発生する必要があります。 (Campbell Atlas)

  • # 2346ドキュメントではなくプロキシが渡された場合に、 belongs_toの関係が E ボリューム可能であることを確認します。

  • #2334 Fixed aggregation map/reduce when fields sometimes do not exist. (ジェームスマシンキー)

  • # 2330ドキュメントが制限を適用して反復処理されている場合の基準のサイズと長さの不整合を修正しました。

  • # 2328が定義されている場合は、すべての関係条件に順序付けが適用されていることを確認します。

  • # 2327ドキュメントがコールバックを実行できない場合は、基本ドキュメントからコールバックを実行しないでください。

  • # 2318浮動小数点数フィールドに任意の数値を設定すると、指定された数値が整数であっても、実際には浮動小数点数として設定されるようにします。

3.0.5

解決された問題

  • # 2313 nil TimeWithZoneフィールドの逆シリアル化を修正しました。 (長含み)

  • # 2311 Document#changesでは、アクセスのみが完了し、実際には変更されなかった配列フィールドとハッシュ フィールドのnil値が返されなくなりました。 2.4 .x からの回帰。

  • # 2310メモリ内で多対多の重複を連続的に設定しても、逆外部キーがクリアされなくなりました。

  • # 2309初期セット以上のハッシュを使用して embedded_one 関係を設定できるようにします。

  • # 2308 has_manyhas_and_belongs_to_manyの関係上の#find経由で取得されたドキュメントがメモリに保存されるようにします。

  • # 2304 AR の期待ごとに複数のスコープが定義されている場合、デフォルトのスコープが上書きされるのではなく、適切にマージされるようになりました。 (キール マケド)

  • # 2300を再読み込みすると、ID マップ内のドキュメントが更新されるようにします。

  • # 2298 ID の null セットをプルする多対多の関係から保護します。 (ジョブない)

  • # 2291ドキュメントの他の変更がどのような変更になっているかに関係なく、タイムスタンプとオプション フィールドのみを更新するためのアクセス操作を修正しました。

  • # 1091値がfalseの場合、存在検証を渡すことを許可します。

3.0.4

解決された問題

  • # 2280関連付けのどちらかに順序付けのデフォルト スコープが存在する場合に、多対多の関係の同期を修正します。

  • # 2278 Criteria#updateは最初に一致するドキュメントのみを適切に更新し、 Criteria#update_allは一致するすべてのドキュメントを更新するようになりました。 (フラグなし、マルチ)。

  • # 2274モデルを読み込むと、エラーが発生しても処理は続行されます。

  • # 2272実際の nil 値のデフォルトスコープを削除するときに、セレクターまたはオプションを消去しないでください。 キーも存在するかどうかを確認する必要があります。

  • # 2266復元されたパラノード ドキュメントには、破棄されたフラグが付けられなくなりました。 (マジョリティ)

  • # 2263多対多の関係で非オブジェクト ID 外部キーのキャストは、検証時ではなく初期セットで発生するようにします。

3.0.3

解決された問題

  • # 2259親タイプまたはシノニム タイプを持つ同じコレクション内の別のドキュメントの ID を使用して、サブクラス化されたドキュメントを ID マップからプルできないようにします。

  • # 2254 $inc 操作ではすべての値が浮動小数に変換されなくなりました。

  • # 2252コールバックが終了する前に、オート保存を起動しないでください。

  • # 2248条件と関係におけるexists?のパフォーマンスを改善しました。 (ジョブない)

3.0.2

解決された問題

  • 2244ネストされた属性内の複数の ID 一括割り当て警告を削除します。

  • # 2242最初または最後に呼び出すときにすべてのドキュメントが読み込まれないように早期ロードする問題を修正します。

  • # 2241 map/reduce 操作では、ほとんどの場合、コレクションに書込む可能性があるため、常に強力な整合性を使用するようになりました。

  • # 2238 #onlyを使用して更新するときにnil -> []の変更を防ぐために、null の外部キー フィールドがサイズ変更可能としてフラグされていることを確認します。

  • # 2236 documentまたはrecordからアクセスできる検証例外内にドキュメントのインスタンスを保持します。

  • # 2234ドキュメントがカスタム オプションでカスタム オプションで適切に機能するように永続化されているときに検証を確認し、検証に合格した場合はクリアしないようにします。

  • # 2224 Model#incBigDecimal値を受け入れるようになりました

  • # 2216を連続して複数回設定するときに 1 つの関係を埋め込むメタデータの割り当てを修正しました。

  • # 2212すべての状況において、 validate: falseを使用した保存後にエラーがクリアされるようになりました。

  • # 2207 ID を早期読み込みする場合は、必須フィールドを取得できない複数反復の問題を回避するために、クエリを重複させる必要があります。

  • 無効な( 関係ではない、または1レベル以上の引数をCriteria.includesに渡すと、 2204はInvalidIncludesエラーを発生させます。

  • # 2203 map/reduce がModel#withと組み合わせて正しく動作するようになりました

    Band.
      with(session: "secondary").
      where(:likes.gt => 100).
      map_reduce(map, reduce).
      out(inline: 1)
    
  • 存在検証を自動的に追加するときに、# 2199 false が尊重されるようになりました。 (どちらかに該当する必要があります)

3.0.1

解決された問題

  • # 2191エラーメッセージ生成メソッドの適切な可視性(プライベート)を確保します。

  • #2187 ネストされたドキュメントのすべてのレベルがJSONで直列化されていることを確認します。

  • # 2184 Ruby コア カーネル メソッドと競合する関係の名前が存在チェックを渡すことを許可します。

  • # 2181他の並べ替え条件が指定されていない場合は、 .first条件で ID の昇順で並べ替えられるようにします

3.0.0

新機能

  • # 2151永続性の前にメタデータを要求する際、メタデータが存在しない場合、Mongoid はMongoid::Errors::NoMetadataエラーを発生させるようになりました。

  • # 2147 Model#becomesが埋め込みドキュメントをコピーするようになりました

  • 新しいコールバックが導入されました: upsert 。このコールバックは、ドキュメントが新規として扱われるか、永続化されているかを認識していないため、 document.upsertを呼び出すときに実行されます。 これにより、モデル コールバックは次のようになります。

    before_upsert
    after_upsert
    around_upsert
    
  • # 2080 /# 2087 Mongoid が永続化するデータベースまたはセッションを、 Model#withが実行可能なオプションでない場合に、グローバルレベルで上書きできるようになりました。

    Mongoid.override_database(:secondary)
    Mongoid.override_session(:secondary)
    
    Band.create(name: "Placebo") #=> Persists to secondary.
    band.albums.create #=> Persists to secondary.
    

    このオプションはグローバルであり、現在のスレッド上のすべてのモデルに対してオーバーライドされることに注意してください。 オーバーライドを実行したくない場合は、これを nil に戻すのが開発者の責任です。

    Mongoid.override_database(nil)
    Mongoid.override_session(nil)
    
  • # 1989基準のcountsizelengthは、データベースアクセスに関してアクティブなレコードとして動作するようになりました。

    Criteria#count は、常にデータベースをヒットしてカウントを取得します。

    Criteria#length 条件がロードされていない場合は、 とCriteria#sizeは 1 回データベースにアクセスし、後続の呼び出しはキャッシュされた値を返します。

    条件が反復処理されているか、ロードされている場合、 lengthsizeは DB にヒットすることはありません。

  • # 1976読み込みでは、基本クエリがゼロ結果の場合、クエリが生成されなくなります。

  • Model.find_by は ブロックを受け入れ、 nil でない場合は見つかったドキュメントにロックを解除します。

    Band.find_by(name: "Depeche Mode") do |band|
      band.likes = 100
    end
    
  • # 1958 /# 1798ドキュメントとbelongs_toの関係がアクセスをサポートするようになりました

    class Band
      include Mongoid::Document
      include Mongoid::Timestamps::Updated
      belongs_to :label, touch: true
    end
    

    ドキュメントの update_at タイムスタンプを現在の時刻に更新します。 これにより、アクセス可能な関係のタイムスタンプも更新されます。

    Band.first.touch
    

    dumped_at で特定の時間フィールドを更新します。

    Band.first.touch(:founded)
    

    これにより、検証またはコールバックは起動されません。

  • Mongoid は MongoDB の $findAndModify コマンドをサポートするようになりました。

    Band.find_and_modify("$inc" => { likes: 1 })
    
    Band.desc(:name).only(:name).find_and_modify(
      { "$inc" => { likes: 1 }}, new: true
    )
    
  • # 1906 Mongoid は、検索対象の複数の ID を指定するときに、ID マップからドキュメントを検索します (ハンス ハッシュ値)

  • #1903 Mongoid では、埋め込みコレクションの where 句にJavaScript式が指定されると、エラーが発生します。 (セ参照)

  • 集計は、該当する場合、Mongoid API とその列挙可能なカウンターポートの両方に準拠するようになりました。

    Band.min(:likes)
    Band.min do |a, b|
      a.likes <=> b.likes
    end
    
    Band.max(:likes)
    Band.max do |a, b|
      a.likes <=> b.likes
    end
    

    フィールド名を指定し、ブロックがない場合、単一の数値が返されますが、ブロックを指定すると、最小値と最大値を持つドキュメントが返されることに注意してください。 これは、Ruby の列挙 API がブロックを提供するときに指示するため、一致する要素が返されます。

    ブロックを提供すると、すべてのドキュメントがメモリに読み込まれます。 シンボルを提供する場合、実行はサーバー上で map/reduce によって処理されます。

  • フィールドの 1 回の呼び出しで のすべてを取得するための集計メソッドが提供されるようになりました。

    Band.aggregates(:likes)
    # =>
    #   {
    #     "count" => 2.0,
    #     "max" => 1000.0,
    #     "min" => 500.0,
    #     "sum" => 1500.0,
    #     "avg" => 750.0
    #   }
    
  • 基準 API からの DSL が、便宜上 map/reduce 操作用に提供されるようになりました。

    Band.where(name: "Tool").map_reduce(map, reduce).out(inline: 1)
    Band.map_reduce(map, reduce).out(replace: "coll-name")
    Band.map_reduce(map, reduce).out(inline: 1).finalize(finalize)
    
  • Mongoid は、Criteria API に 元の を使用するようになりました。 ドキュメントについては、 元のリポジトリとAPI Docsを参照してください。

  • # 1861 Mongoid は、関係の逆を判断できず、可能性のある候補が複数ある場合にAmbiguousRelationshipエラーを発生させるようになりました。 (ハンス ハッシュ値)

  • 基準から直接 explain を実行できるようになりました。

    Band.where(name: "Depeche Mode").explain
    
  • # 1856 1 対多の関係でのプッシュが連鎖できるようになりました

    band.albums.push(undertow).push(aenima)
    
  • # 1842 MultiParameterAttributes でエイリアス フィールドがサポートされるようになりました (アンコン)

  • # 1833親が定義されていない埋め込みドキュメントを保存しようとすると、Mongoid はMongoid::Errors::NoParent例外を発生させるようになりました。

  • フィールド名を取得するための ORM に依存しない方法を追加しました

    class Band
      include Mongoid::Document
      field :name, type: String
    end
    
    Band.attribute_names
    
  • 関係 の # 1831 find_or_create_byが、一括割り当てとタイプ オプションを選択するようになりました。 (大ログします)

    class Band
      include Mongoid::Document
      embeds_many :albums
    end
    
    band.albums.find_or_create_by({ name: "101" }, LP)
    
  • # 1818は、 embeds_many関係が保存されるキーを選択する機能を追加します。 (キリル文字)

    class User
      include Mongoid::Document
      field :name, type: String
      embeds_many :prefs, class_name: "Preference", store_as: 'my_preferences'
    end
    
    user.prefs.build(value: "ok")
    user.save
    # document saves in MongoDB as:
    # { "name" => "foo", "my_preferences" => [{ "value" => "ok" }]}
    
  • # 1806 Model.find_or_create_byModel.find_or_initialize_byは、belongs_to 関係のパラメータとしてドキュメントを取ることができるようになりました。

    person = Person.first
    Game.find_or_create_by(person: person)
    
  • # 1774関係に依存関係関係の :restrict オプションが追加されました。これにより、まだ子がある親を削除しようとするとエラーが発生します。 (ハンス ハッシュ値)

    class Band
      include Mongoid::Document
      has_many :albums, dependent: :restrict
    end
    
    band = Band.first
    band.albums << Albums.first
    band.delete # Raises DeleteRestriction error.
    
  • # 1764フィールドがデフォルト値と異なるかどうかを確認するメソッドを追加します。

    class Band
      include Mongoid::Document
      field :name, type: String, default: "New"
    end
    
    band = Band.first
    band.name_changed_from_default?
    
  • # 1759無効なフィールド エラー メッセージが更新され、元のメソッドのソースと場所が表示されるようになりました 新しいメッセージは次のとおりです。

    Problem:
      Defining a field named 'crazy_method' is not allowed.
    Summary:
      Defining this field would override the method 'crazy_method',
      which would cause issues with expectations around the original
      method and cause extremely hard to debug issues.
      The original method was defined in:
        Object: MyModule
        File: /path/to/my/module.rb
        Line: 8
    Resolution:
      Use Mongoid.destructive_fields to see what names are
      not allowed, and don't use these names. These include names
      that also conflict with core Ruby methods on Object, Module,
      Enumerable, or included gems that inject methods into these
      or Mongoid internals.
    
  • #1753/#1649 A setter and getter for has_many relations to set its children is now provided. (ピリオド ジャーク)

    class Album
      include Mongoid::Document
      has_many :engineers
    end
    
    class Engineer
      include Mongoid::Document
      belongs_to :album
    end
    
    album = Album.first
    engineer = Engineer.first
    album.engineer_ids = [ engineer.id ]
    album.engineer_ids # Returns the ids of the engineers.
    
  • # 1741 Mongoid は、Mongoid がインデックス定義を管理し、削除を自動化する必要がある環境のインデックスを強制的に削除するための レイテンシ タスクを提供するようになりました。 (ハンス ハッシュ値)

    rake db:force_remove_indexes
    rake db:mongoid:force_remove_indexes
    
  • # 1726 Mongoid.load!が、ロードする環境の任意の 2 つ目の引数を受け入れるようになりました これは、設定されている場合は、どの環境変数よりも優先されます。

    Mongoid.load!("/path/to/mongoid.yml", :development)
    
  • # 1724 Mongoid が正規表現フィールドをサポートするようになりました

    class Rule
      include Mongoid::Document
      field :pattern, type: Regexp, default: /[^abc]/
    end
    
  • # 1714 /# 1706インデックス作成時のログ記録を改善しました。 (ハンス ハッシュ値)

    ルートdocument modelにインデックスが存在する場合:

    Creating indexes on: Model for: name, dob.
    

    埋め込みモデルでインデックスが定義されている場合、

    Index ignored on: Address, please define in the root model.
    

    インデックスが定義されていない場合は何もログに記録されません。無効なインデックスが定義されている場合はエラーが発生します。

  • # 1710 Mongoid が ID 属性と type 属性を自動保護しないようにしたい場合は、 構成オプションを設定してこれをオフにすることができます。

    Mongoid.protect_sensitive_fields = false
    
  • # 1685の関係に属するもので、 build_ メソッドと create_ メソッドが追加されました。

    class Comment
      include Mongoid::Document
      belongs_to :user
    end
    
    comment = Comment.new
    comment.build_user # Build a new user object
    comment.create_user # Create a new user object
    
  • # 1684 Mongoid がそれを決定できないため、適切なアプリケーションの定義がない関係に子を設定しようとする場合は、 Mongoid::Errors::InverseNotFoundが発生します。

    class Car
      include Mongoid::Document
      embeds_one :engine, class_name: "Motor"
    end
    
    class Motor
      include Mongoid::Document
      embedded_in :machine, class_name: "Car"
    end
    
    car = Car.new
    car.engine = Motor.new # raises an InverseNotFound error.
    
  • # 1680多形関係は検索クエリで*_typeキーを使用するようになりました。

    class User
      include Mongoid::Document
      has_many :comments, as: :commentable
    end
    
    class Comment
      include Mongoid::Document
      belongs_to :commentable, polymorphic: true
    end
    
    user = User.find(id)
    user.comments # Uses user.id and type "User" in the query.
    
  • # 1677同じ親クラスへの親分離可能な多形関係のサポートが利用可能になりました。 これは、子がどの関係に属しているかを確認するために、親側から設定された場合にのみ機能します。 (ダウマーン)

    class Face
      include Mongoid::Document
      has_one :left_eye, class_name: "Eye", as: :visible
      has_one :right_eye, class_name: "Eye", as: :visible
    end
    
    class Eye
      include Mongoid::Document
      belongs_to :visible, polymorphic: true
    end
    
    face = Face.new
    right_eye = Eye.new
    left_eye = Eye.new
    face.right_eye = right_eye
    face.left_eye = left_eye
    right_eye.visible = face # Will raise an error.
    
  • to_criteriaに応答する# 1650オブジェクトを既存の基準オブジェクトにマージできるようになりました

    class Filter
      def to_criteria
        # return a Criteria object.
      end
    end
    
    criteria = Person.where(title: "Sir")
    criteria.merge(filter)
    
  • # 1635すべての例外によって、発生した問題、発生した理由の詳細な概要、潜在的な解決策など、より包括的なエラーが提供されるようになりました。 例:

    (Mongoid::Errors::DocumentNotFound)
    Problem:
      Document not found for class Town with
      id(s) [BSON::ObjectId('4f35781b8ad54812e1000001')].
    Summary:
      When calling Town.find with an id or array of ids,
      each parameter must match a document in the database
      or this error will be raised.
    Resolution:
      Search for an id that is in the database or set the
      Mongoid.raise_not_found_error configuration option to
      false, which will cause a nil to be returned instead
      of raising this error.
    
  • データベースで検索するための引数のハッシュを受け取る# 1616 Model.find_byが追加されました。 単一のドキュメントが返されない場合は、 DocumentNotFound エラーが発生します。 (ピリオド ジャーク)

    Band.find_by(name: "Depeche Mode")
    
  • # 1606 Mongoid では、 をリレーショナルに追加すると、アクティブ レコードと同様に自動保存が有効になるようになりました。

    class Band
      include Mongoid::Document
      has_many :albums
      accepts_nested_attributes_for :albums # This enables the autosave.
    end
    
  • # 1477 Mongoid が ID とタイプ属性を一括割り当てから自動的に保護するようになりました。 これは、アクセス可能なものとして再定義することで上書きできます(推奨はされません)。

    class Band
      include Mongoid::Document
      attr_accessible :id, :_id, :_type
    end
    
  • # 1459の作業単位にオプションを渡すことで、特定のコード実行に対して ID マップを無効にできるようになりました。

    Mongoid.unit_of_work(disable: :all) do
      # Disables the identity map on all threads for the block.
    end
    
    Mongoid.unit_of_work(disable: :current) do
      # Disables the identity map on the current thread for the block.
    end
    
    Mongoid.unit_of_work do
      # Business as usual.
    end
    
  • # 1355関連付けでは、単一のドキュメント永続化操作で安全性オプションを提供できるようになりました。

    band.albums.with(safe: true).push(album)
    band.albums.with(safe: true).create(name: "Smiths")
    
    album.with(safe: true).create_producer(name: "Flood")
    
  • # 1348積載量が多対多の関係でサポートされるようになりました

  • # 1292削除属性が nil に設定するのではなく、ドキュメントが保存されるときに属性が設定解除されるようになりました

    band = Band.find(id)
    band.remove_attribute(:label) # Uses $unset when the document is saved.
    
  • # 1291 Mongoid データベース セッションは遅延に接続され、完全にスレッドセーフになりました。 新しいスレッドが作成されると、そのための新しいデータベース セッションが作成されます。

  • # 1291 Mongoid が mongoid.yml で定義されている任意の数のデータベース接続をサポートするようになりました たとえば、ローカル 単一サーバー db、複数のアベイラビリティーゾーンのレプリカセット、シャード クラスターをすべて同じアプリケーション環境に持つことができます。 Mongoid はいつでも任意のセッションに接続できます。

  • # 1291 Mongoid では、実行時に任意のデータベースまたはコレクションを、 withを使用してクエリごとまたは永続性操作に基づいて永続化できるようになりました。

    Band.with(collection: "artists").create(name: "Depeche Mode")
    band.with(database: "secondary).save!
    Band.with(collection: "artists").where(name: "Depeche Mode")
    
  • # 1291新しい改善されたstore_inマイクロを使用して、ドキュメントが保存されるモデルごとに構成できるようになりました。

    class Band
      include Mongoid::Document
      store_in collection: "artists", database: "secondary", session: "replica"
    end
    

    これは、実行時にwithメソッドを使用して上書きできます。

  • # 1212埋め込みドキュメントを永続性のあるリレーショナルから排除できるようになりました。

    band.albums.pop # Pop 1 document and persist the removal.
    band.albums.pop(3) # Pop 3 documents and persist the removal.
    
  • # 1188関係に存在述語があり、関係が空白かどうかを簡素化するための存在述語が追加されました。 (アンディ モーダル)

    class Band
      include Mongoid::Document
      embeds_many :albums
      embeds_one :label
    end
    
    band = Band.new
    band.albums?
    band.has_albums?
    band.label?
    band.has_label?
    
  • # 1188 1 - 1の関係には、関係が現在存在しない場合にアクセス時に関係を空の属性で自動的に構築するかどうかを示す :自動ビルド オプションが追加されました。 embedded_one、 embedded_in、has_one、long_to で動作します。 (アンディ モーダル)

    class Band
      include Mongoid::Document
      has_one :label, autobuild: true
    end
    
    band = Band.new
    band.label # Returns a new label with empty attributes.
    

    存在チェックを使用する場合、自動ビルドは実行されません。

    band = Band.new
    band.label? # Returns false, does not autobuild on a check.
    band.has_label? # Returns false, does not autobuild on a check.
    
  • # 1081 Mongoid インデックスは、多形データ属 にindex: trueを提供する場合、ID とタイプの両方を複合インデックスとしてインデックス化します。

    class Comment
      include Mongoid::Document
    
      # Indexes commentable_id and commentable_type as a compound index.
      belongs_to :commentable, polymorphic: true, index: true
    end
    
  • # 1053定義されていないフィールドを設定し、動的フィールドを許可する場合は、メソッドがない代わりにMongoid::Errors::UnknownAttributeを発生させます。 (キリル文字)

    Mongoid.allow_dynamic_fields = false
    
    class Person
      include Mongoid::Document
      field :title, type: String
    end
    
    Person.new.age = 50 # raises the UnknownAttribute error.
    
  • # 772フィールドに読み取り専用としてフラグを付けることができるようになりました。これにより、ドキュメントが新しい場合にのみ値が設定可能になります。

    class Band
      include Mongoid::Document
      field :name, type: String
      field :genre, type: String
    
      attr_readonly :name, :genre
    end
    

    読み取り専用値は、永続化されたドキュメントに読み取り専用値を設定しようとすると無視されます。ただし、 update_attribute と排除_attribute ではエラーが発生します。

    band = Band.create(name: "Depeche Mode")
    band.update_attribute(:name, "Smiths") # Raises ReadonlyAttribute error.
    band.remove_attribute(:name) # Raises ReadonlyAttribute error.
    

メジャー変更(下位互換性がありません)

  • 多形関係には、オブジェクト ID 以外の ID を含めることはできません。 これは、Mongoid が関係の反対側にあるさまざまなクラスが自分の ID をどのように保存するかを最適化された方法で適切に把握できず、すべてが異なる可能性があるためです。

これは以前は許可されていませんでしたが、明示的に記述された場所はありませんでした。

  • # 2039関係の存在を検証すると、関係と外部キー値の両方がチェックされるようになりました。

  • インデックス作成構文が変更されました。 最初のパラメーターは、追加オプション用の任意の 2 番目のハッシュ パラメーターを持つ名前と方向のペアのハッシュになりました。

    オプションを使用した通常のインデックスでは、方向は1または - 1のいずれかです。

    class Band
      include Mongoid::Document
      field :name, type: String
    
      index({ name: 1 }, { unique: true, background: true })
    end
    

    地理空間インデックスでは、方向として " 2 d " が必要です。

    class Venue
      include Mongoid::Document
      field :location, type: Array
    
      index location: "2d"
    end
    
  • カスタム シリアル化可能なフィールドが変更されました。 オブジェクトにはMongoid::Fields::Serializableを含めることはできなくなりました。代わりに、 3メソッド( #mongoize.demongoize.evolve )を実装するだけで済みます。

    #mongoize は、 オブジェクトを mongo 対応の値に変換する インスタンス メソッドです。

    .demongoize は クラス メソッドであり、 mongo からいくつかのデータを受け取り、カスタム型の と オブジェクトをインスタンス化できます。

    .evolve は、任意のオブジェクトを受け取り、 Mongoid::Criteriaで使用するように変換することができるクラス メソッドです。

    Rangeにおけるこれの実装例。

    class Range
    
      def mongoize
        { "min" => first, "max" => last }
      end
    
      class << self
    
        def demongoize(object)
          Range.new(object["min"], object["max"])
        end
    
        def evolve(object)
          { "$gte" => object.first, "$lte" => object.last }
        end
      end
    end
    
  • Document#changes は、異なるアクセス権を持つハッシュではなくなりました。

  • after_initialize オプションが設定されている場合、コールバックが子にカスケードしなくなりました。

  • メモリおよび mongo コンテキスト上の # 1865 countは、列挙可能に対する Ruby のcountと完全に同じように動作し、オブジェクトまたはブロックを取ることができます。 これは mongo コンテキストで最適化されており、ブロックを渡す場合を除いてすべてがメモリにロードされます。

    Band.where(name: "Tool").count
    Band.where(name: "Tool").count(tool) # redundant.
    Band.where(name: "Tool") do |doc|
      doc.likes > 0
    end
    

    メモリと mongo コンテキストの両方で署名は同じですが、埋め込みドキュメントはすでにメモリにロードされているため、メモリコンテキストにはブロック構文のみを使用することをお勧めします。

    また、スキップと制限を考慮するためにブール値を渡すことは必ずしも有用な機能ではないため、サポートされなくなっていることにも注意してください。

  • autocreate_indexes構成オプションが削除されました。

  • Model.defaults は存在しなくなりました。 Model.pre_processed_defaultsModel.post_processed_defaultsを組み合わせて、すべてのデフォルトを取得できます。

    Band.pre_processed_defaults
    Band.post_processed_defaults
    
  • Model.identityModel.keyは削除されました。 カスタム ID の場合、ユーザーは _id フィールドを上書きする必要があります。

    デフォルト値がプロシージャの場合、他のすべての属性が設定された後にデフォルト値が適用されます。

    class Band
      include Mongoid::Document
      field :_id, type: String, default: ->{ name }
    end
    

    他の属性のにデフォルトを適用するには、 :pre_processedを true に設定します。

    class Band
      include Mongoid::Document
      field :_id,
        type: String,
        pre_processed: true,
        default: ->{ BSON::ObjectId.new.to_s }
    end
    
  • さまざまな言語のカスタム アプリケーションの例外が、 Mongoid.add_language機能とともに削除されました。

  • Mongoid は1.8のサポートを終了しました。 MRI 1.9.3以上、または JRuby 1.6以上の1.9モードのみがサポートされます。

  • # 1734複数の ID を持つドキュメントをModel.find経由で検索する際、すべてのID が見つからない場合は Mongoid はエラーを発生させ、欠落している ID を通知します。 以前は、何も返されない場合にのみエラーが発生していました。

  • # 1675関係に存在検証を追加すると、自動保存が有効になるようになりました。 これは、新しい親オブジェクトが新しい子オブジェクトとともに保存され、 が有効であるとマークされている場合に、両方が永続化されてデータベース内の正しい状態を確保するためのものです。

  • # 1491空の翻訳ではアクセス時に空のハッシュが返されるようになりました

  • # 1484 Model#has_attribute?がアクティブ レコードと同じように動作するようになりました

  • # 1471 Mongoid が時間から任意のレベルの精度を削除しなくなりました。

  • # 1475アクティブなサポートのタイムゾーンが定義されている場合は、デフォルトで時系列で使用されるようになりました。

  • # 1342 Model.findmodel.relation.findは、単一または複数の ID のみを受け入れるようになりました。 条件ハッシュを持つ最初の/最後の/すべての が削除されました。

  • # 1291 mongoid.yml が完全に変更され、既存のアプリケーションをアップグレードすると Mongoid 固有の構成エラーがいくつか表示されます。 既存のレイク タスクを使用して新しい mongoid.yml を再生成できます。このタスクは、すべての構成の可能性を高めるために非常にコメント付けされています。

  • # 1291 persist_in_safe_mode構成オプションは削除されました。 また、 mongoid.yml でデータベース セッションに、デフォルトでセーフ モードで保持するかどうかを指示する必要があります。

    production:
      sessions:
        default:
          database: my_app_prod
          hosts:
            - db.app.com:27018
            - db.app.com:27019
          options:
            consistency: :eventual
            safe: true
    
  • # 1291 safelyunsafelyは削除されました。 実行時にセーフモード オプションを提供するために、 withを使用するようになりました

    Band.with(safe: true).create
    band.with(safe: { w: 3 }).save!
    Band.with(safe: false).create!
    
  • # 1270関係マイクロは、AR と一致するように変更されました。 :has_one、 :has_many、 :has_and_belongs_to_many、:belongs_to のみが存在するようになりました。

  • # 1268 Model#new?は削除されたため、開発者は常にModel#new_record?を使用する必要があります。

  • # 1182の外部キー フィールドの値を設定した後、関係を更新するために再読み込みは必要なくなりました。 この動作は アクティブ レコード とまったく同じであることに注意してください。

    ID が設定されているが、そのドキュメントが永続化されていない場合、関係にアクセスすると空の結果が返されます。

    ID が設定され、そのドキュメントが永続化されている場合、関係にアクセスするとドキュメントが返されます。

    ID が設定されているが、基本ドキュメントがその後保存されない場合、再読み込みするとドキュメントは元の状態に戻ります。

  • # 1093フィールドのシリアル化戦略は、配列、ハッシュ、整数、ブール値でより一貫性があり、適切な場合は と一致するように変更されました。

    配列の直列化はArray.wrap(object)を呼び出します ハッシュの直列化はHash[object]を呼び出します(オブジェクトの to_hash) 整数の直列化は常にto_i経由で int を返します ブール値の直列化はデフォルトで nil ではなく false になります。

  • $size がシンボルのサイズ方法と競合しないようにするための条件で、 933 :field.size:field.countに変更されました。

  • # 829 /# 797 Mongoid スコープ コードが完全に書き換えられ、ActiveRecord API と一致するようになりました この下位互換性のない変更により、一部のメソッドが削除または名前変更されました。

    Criteria#as_条件と Criteria#fuse は存在しなくなりました。

    Criteria#merge は、 to_criteriaに応答する別のオブジェクトのみを受け入れるようになりました。

    Criteria#merge)は、新しい基準オブジェクトを作成せずに別のオブジェクトにマージされるようになりました。

    Band.where(name: "Tool").merge!(criteria)
    

    名前付きスコープとデフォルト スコープは、パラメーターとしてハッシュを採用しなくなりました。 今後は、基準をラップする条件とプロシージャのみが受け入れられ、引数が正しくない場合はエラーが発生します。

    class Band
      include Mongoid::Document
    
      default_scope ->{ where(active: true) }
      scope :inactive, where(active: false)
      scope :invalid, where: { valid: false } # This will raise an error.
    end
    

    「名前付き_スコープ」マニュアルは削除され、今後は「スコープ」のみを使用するようになりました。

    Model.unscoped は ブロックを受け入れるため、ブロック内の呼び出しにはデフォルトのスコープが適用されません。

    Band.unscoped do
      Band.scoped.where(name: "Ministry")
    end
    

    Model .scoped は、基準オプション ハッシュに直接設定されるオプションを取るようになりました。

    Band.scoped(skip: 10, limit: 20)
    
  • # 463 Document#upsertDocument#saveのエイリアスがなくなり、呼び出された MongoDB のアップサート コマンドが実際に実行されるようになりました。 以前にこのメソッドを使用していて、同じ動作を必要とする場合は、 saveに切り替えてください。

    band = Band.new(name: "Tool")
    band.upsert #=> Inserts the document in the database.
    band.name = "Placebo"
    band.upsert #=> Updates the existing document.
    

解決された問題

  • # 2166 Criteria#from_map_or_dbは、タイプが正しいかどうかを確認するため、早期ロード時にタイプ選択を削除します。

  • # 2129が多くの関係を埋め込むすべてのフィールドの並べ替えを修正しました。

  • # 2124パラメータ ドキュメントのデフォルト スコープと削除されたスコープを修正しました。

  • # 2122ブール値フィールドでの埋め込みドキュメントのソートを許可します。

  • # 2119 Criteria#update_allがアトミック操作と通常のセットを受け入れることを許可します。

  • # 2118 DateTime -> Time変換中に精度を削除しないでください。

  • # 2117ネストされた属性を使用する場合、埋め込みには 1 つの関係でコールバックが実行されるようにします。

  • # 2110 Model#touchが埋め込みドキュメントで適切に動作するようになりました

  • # 2100 delete_at が設定されているパラノード ドキュメントでアトミック操作を適切に実行できるようにします。

  • # 2089外部キーに関して、mongo 化と展開を適切に分離できるようにします。

  • #2088 ID がオブジェクト ID として保存されている場合、 string ID による検索が ID マップからプルできるようになります。

  • # 2085浮動小数点数と整数を大多数の小数にデータベース化できるようにします。

  • # 2084メタデータが存在しない場合は、カスケードしないでください。

  • #2078 Model#cloneまたはModel#dup を呼び出すと、属性がダーティとして適切に設定されるようになりました。

  • # 2070 created_at も持つ新しいドキュメントで、アップデートされた_atを手動で上書きできるようにします。

  • # 2041早期読み込みによってドキュメントが 0 件返された後、関係アクセスでデータベースを複数回ヒット しないでください 。

  • # 1997コールバックをカスタマイズすると、終了時にコールバック チェーンを停止できるようになります。

  • # 1972 addedloadedunloadedは、 1 -n 関係の一部であるドキュメントで、有効なスコープ名になるようになりました。

  • 埋め込みドキュメントでの# 1952 /# 1950 #all_inの動作は、空の配列を渡すときにルート ドキュメントと適切に一致するようになりました。 (ハンス ハッシュ値)

  • # 1941 /# 1939 Model.find_byでは、発生なしエラーが false に設定されている場合に nil が返されるようになりました。 (ハンス ハッシュ値)

  • # 1859 /# 1860 Model#remove_attributeが埋め込みドキュメントの適切な設定を解除するようになりました (アンコン)

  • 番号1852のカスケード コールバックで無限再帰が存在しないようにします。 (アラート)

  • # 1823 Relation#includes?が ID マップを有効にして正常に動作するようになりました

  • ハッシュと配列フィールドのみがアクセスされた場合、# 1810 Model#changed?は true を返さなくなりました。

  • # 1876 /# 1782多数の条件クエリを埋め込みでドット表記を許可します。 (キリル文字)

  • # 1745属性設定内でバッチクリアが動作するように修正しました。

  • # 1718関係において、最初と最後に の整合性を確保します。これらは常にデータベースの最初と最後に一致するようになりましたが、メモリ内の は最初に選択されます。

  • # 1692 /# 1376 Model#updateattributesModel#update_attributes!が割り当てオプションを受け入れるようになりました。 (ハンス ハッシュ値)

  • # 1688 /# 1207名前空間内の関係マイクロでクラス名を指定する場合、名前空間は必要ありません。 (ハンス ハッシュ値)

  • # 1665 /# 1672は、# 一致などのネストされた条件セレクターで複雑な条件を拡張します。 (ハンス ハッシュ値)

  • # 1335条件に並べ替えオプションがすでに存在する場合は、最初と最後に ID 並べ替え条件を追加しないでください。

  • # 1321参照された多数の列挙可能なターゲットはハッシュされるようになり、重複をより効率的に防ぐことができます。

  • # 1135 DateTimes が逆直列化時に適切にタイムゾーンを取得するようになりました

  • # 1031 Mongoid が、配列フィールドの値を可能な場合、適切な Mongo 対応の値に直列化するようになりました

  • # 685埋め込みドキュメントでバージョン管理を使用しようとすると、開発者にこれが許可されていないことを警告する適切なエラーが発生するようになりました。

2.6.0

新機能

  • # 2709は Mongoid 3からtouch機能をバックポートしました。

2.5.2

解決された問題

  • ドキュメントに2502 Mongoid::Timestamps::Updatedが含まれていない場合に適切に処理されるように、キャッシュ キーを修正しました。 (アーティッド ルール ネーム)

2.5.1

解決された問題

  • # 2492バックポートのカスケードコールバックのパフォーマンスとメモリを3.0.0 -stable から修正しました。

  • # 2464ネストされた属性の修正をバックポートして、属性更新時に多くの関係をメモリ内に保持するようにします。 (チャーンの場合)

2.5.0

新機能

  • これは、1.7.0 以降のmongoとBSON gem をサポートするためのリリースであり、2.4 を維持している問題を解決します。 1.6.2未満にロックされたシリーズ

2.4.12

解決された問題

  • # 2178埋め込み 1 つの関係の置換後に破棄コールバックが実行されるようにします。

  • # 2169コールバックで保存後にドキュメントが破棄されたときに保存を渡すようにします。

  • 2144ドキュメントの一意性検証により、適切なスコープが設定されるようになりました。

  • # 2127ネストされた属性の削除中に埋め込みドキュメントの親のバインドを解除しないでください。

2.4.11

解決された問題

  • このリリースにより、mongo ドライバーのバージョンは1.6.2に強制的に上限付きます。 Mongo::Connection.from_uri API の変更により、有効な接続オプションが許可されなくなりました。

  • # 2040ロケール存在検証の不適切な補間を修正しました。

  • # 2038両方で定義されている場合は、 inverse_ of 宣言だけでなく、外部キーのみで逆関係を決定できるようにします。

  • # 2023コア Ruby メソッドと競合する動的型のシリアル化も引き続きシリアル化できます。

  • # 2008メモリ内の関係が空白の場合、存在検証では db がヒットして有効性を確認する必要があります。

  • # 2006 #only 呼び出しの実行後に _id フィールドのみを除外できるようになりました。

2.4.10

解決された問題

  • # 2003埋め込みドキュメントがデータベースに nil として保存されている場合に、ドキュメント生成で失敗しなくなりました。

  • #1997Before_detroy コールバックが false を返す場合、ネストされた属性を介して paranoid 埋め込みDocsを削除しないでください。

  • # 1994 dependent: :deleteは、各ドキュメントに対して 1 回ではなく、1 対多および多対多の関係に対して 1 回だけデータベースをヒットするようになりました。

  • # 1987作業単位内で 2 回早期読み込みを行う場合に、ドキュメントを ID マップに二重挿入しないでください。

  • # 1953一意性検証がローカライズされたフィールドで機能するようになりました。

  • # 1936親からの更新呼び出しでネストされた属性やドキュメント自体を使用していない場合に、競合することなくアトミックに埋め込みドキュメントを n レベルに設定できるようにします。

  • # 1957 /# 1954データベース名が継承されて設定されていることを確認します。 (ハンス ハッシュ値)

2.4.9

解決された問題

  • # 1943大きな小数点に対して数値検証が機能するようにします。

  • # 1938長さ検証がローカライズされたフィールドで動作するようになりました

  • # 1936プッシュと他のプッシュの競合が適切に処理されるようになりました

  • # 1933 Proxy#extendは を介してターゲットに委任する必要があります。プロキシ自体の拡張はProxy#proxy_extendを通じて処理されるようになりました。

  • # 1930すべての where 句で複雑な条件が展開されていることを確認します。 (ハンス ハッシュ値)

  • 1928ネストされた属性による埋め込みドキュメントの削除では、すべてのケースをカバーする $pullAll ではなく ID 一致条件を使用して $pull が実行されるようになりました。 以前に、すでに保存されているドキュメントに新しくデフォルトを追加した場合、ドキュメントはデータベース内の内容と一致しなかったため、この問題では削除できませんでした。

  • # 1924 /# 1917新しいドキュメントではスコープが設定されていない、デフォルトのスコープを持つ埋め込み関係へのプッシュを修正します。 (ハンス ハッシュ値)

  • # 1922 /# 1919コレクションを削除すると、内部でラップされているコレクションのメモリが解除され、Capped コレクションの定義時に、それらが常に Capped として再作成されるようになります。 (ハンス ハッシュ値)

  • # 1916 /# 1913一意性検証はデフォルト スコープの影響を受けなくなりました。 (ハンス ハッシュ値)

  • # 1943大きな小数点に対して数値検証が機能するようにします。

2.4.8

解決された問題

  • # 1892マスター操作エラーが発生しない場合、Mongoid は操作を再試行する前に再接続する必要があります。

  • # 1887コールバックが定義されていない子へのコールバックのカスケードは 行わないでください 。

  • # 1882重複した ID 条件を、重複選択のある $and に展開しないでください。

  • # 1878 firstlastだけでなく、反復処理の特定のonlyまたはwithout選択でもデフォルトのアプリケーション値が適用されないように修正しました。

  • # 1874空白以外の値を破棄することで値を適切に処理できるように、すべての空白のプロシージャ定数を拒否する問題を修正しました。 (ステミング)

  • # 1869 /# 1868遅延アトミックセットでは、複数レベルの埋め込みの問題を修正するために、メタデータ名ではなくアトミックパスを使用するようになりました。 (提供された仕様)

  • # 1866処理済みデフォルト(プロシージャ)は、lation.Build 内の子のバインディング後に適用する必要があります。

2.4.7

解決された問題

  • 埋め込みドキュメントの再読み込み時に親への参照が保持されるようにします。

  • # 1837ドライバーには常にシンボル オプションを渡します。

  • # 1836外部キーがリンクされていない永続化されたドキュメントが関係カウントで選択されるようにします。

  • # 1820 embedded_many 内の埋め込みドキュメントを破棄すると、基礎となる _unped ターゲットからドキュメントも削除され、関係が再インデックス化されます。

  • # 1814 after_initialize でコールバックをカスケードしないでください。

  • #1800 mongo接続の無効なオプションはフィルタリングで除外されるようになりました

  • # 1785インスタンスのチェックを適切に処理できるように、ケースの等価性を修正しました。

2.4.6

解決された問題

  • # 1772 string を整数に変換するには、skip と limit を使用できます。 (特権)

  • # 1767 Model#update_attributes が一括割り当てオプションを再度受け入れます。 (ハンス ハッシュ値)

  • # 1762 Criteria#any_ of が、ローカライズされたフィールドを正しく処理できるようになりました。

  • # 1758メタデータが、外部ライブラリ サポートのオプションに対して自己を返すようになりました

  • # 1757直列化によってすべての属性型が フィールドで定義された型に変換されるようにします。

  • #1756 シリアル化可能なハッシュ オプションは を介して埋め込みDocsに渡される必要があります。

2.4.5

解決された問題

  • # 1751 Mongoid のロガーが Ruby ログ API 互換性の レベルに応答するようになりました。

  • # 1744 /# 1750基準 API を使用して、埋め込みドキュメント内のローカライズされたフィールドでソートが機能するようになりました。 (ハンス ハッシュ値)

  • # 1746存在検証で、ローカライズされたフィールドが空であったロケールが表示されるようになりました (キリル文字)

  • # 1727埋め込み条件でドット表記を許可し、1 つの埋め込みと多数の埋め込みの両方で使用できるようにします。 (ライト アンダーツリー)

  • # 1723初期化コールバックは、子が変更されたかどうかを判断する必要なく、子を通してカスケードする必要があります。

  • # 1715直列化可能なハッシュが、保存ごとまたは保存後に含まれる埋め込みドキュメントの一貫性を確保するようになりました。

  • # 1713クラスをサブクラスのインスタンスと比較するときに === チェックを修正しました。

  • # 1495コールバックで、バーストした1.8.7で「メソッドの外部で呼び出されるスーパー」エラーが発生しなくなりました Ruby。

2.4.4

解決された問題

  • # 1705多対多の外部キーの順序変更を許可します。

  • でアップデートされた# 1703は、再度バージョン化されました。 (ルーチン ソーザ)

  • # 1686関係に属するバインドとアンバインドの基本メタデータを設定します。

  • # 1681サブディレクトリに名前空間が存在しない場合は、名前空間のないモデルのインデックスを作成しようとします。

  • # 1676早期読み込みがデフォルトのスコープとして機能するようになりました。

  • # 1665 /# 1672は、# 一致などのネストされた条件セレクターで複雑な条件を拡張します。 (ハンス ハッシュ値)

  • # 1668警告を呼び出す前に Mongoid ロガーが存在することを確認する。 (レプリカセット)

  • # 1661のクローンされたドキュメントで一意性検証が機能するようにします。

  • # 1659同じ埋め込み関係をリセットするときに、遅延アトミックセットをクリアします。

  • # 1656 /# 1657のスコープと属性の両方が変更されていない場合は、一意性検証のためにデータベースにアクセスしないでください。 (プライマリ)

  • # 1205 /# 1642 Criteria#onlyCriteria#without経由でデータベースから返されるフィールドを制限し、その後ドキュメントを保存する場合。 デフォルト値が除外されたフィールドを上書きしなくなりました。

2.4.3

解決された問題

  • すでに UTC になっている場合は、# 1647 DateTime 直列化ではローカル時間に変換されません。

  • # 1641 /# 1639 Mongoid.observer.disable : すべてがAR と同じように動作するようになりました

  • # 1640更新利用者は、クラス名ではなく、永続化されるコレクションの名前に関連付けられる必要があります。

  • # 1637 /# 1636スコープは、サブクラス化時に親クラスのスコープを変更しなくなりました。 (ハンス ハッシュ値)

  • 埋め込まれた多くの関係に対する $ 1629と $in の条件が、正規表現検索とさまざまな長さの要素を適切に処理できるようになりました。 (ダウマーン)

  • # 1623 /# 1634デフォルトのスコープが Mongoid::Versioning を中断しなくなりました。 (ハンス ハッシュ値)

  • # 1605レスポンの回帰を修正しました、Rails 3.2

2.4.2

解決された問題

  • #1628 _type フィールドは、include_type_for_serialization のグローバル オプションとしてJSONまたは xML への直列化に再度含めることができます。 (Roman Shellenz)

  • # 1627形式の検証が、ローカライズされたフィールドで正しく動作するようになりました。 (ダウマーン)

  • # 1617関係プロキシ メソッドが Mongoid の禁止フィールドのリストに表示されるようになりました

  • # 1615すべての仕様の実行でホストとポートの単一構成を許可します。これは MONGOID_Spec_HOST と MONGOID_Spec_port 環境変数を設定することで上書きされます。

  • # 1610パラメータ付きドキュメントをバージョン管理し、最大バージョンが設定されている場合、埋め込み関係から古いバージョンをハード削除します。

  • # 1609カーソルの反復処理や他のすべての操作中に接続の再試行が許可されます。

  • # 1608ネストされた属性で ID を渡し、ドキュメントが存在しない場合にメソッド エラーが発生しないように保護します。

  • # 1605ヘルプの非推奨警告を削除します。Rails 3.2

  • 1602型キャスト時に $and クエリと $or クエリの構造を保持します。

  • # 1600の関係が提供された場合、一意性検証でエラーが発生しなくなりました。

  • # 1599それぞれを実行するときに、列挙可能なターゲットがメモリ内の にあるものを最初に生成することを確認します。必ずしもアンロードされた が最初ではないことを確認してください。

  • # 1597同じ要素を持つ配列フィールドの順序を変更する機能を修正します。

  • # 1590フィールドが配列内にネストされている条件内のブール値の適切な直列化を許可します。

2.4.1

解決された問題

  • 埋め込みドキュメントの # 1593配列が、元のバージョンから変更されると、適切にアトミックに更新されるようになりました。

  • # 1592 create_indexs レイテンシ タスクでのインデックス生成からの例外を受け入れないでください。

  • # 1589ドキュメントがまだメモリにロードされていない場合に、HATM に空の配列を割り当てることができるようになります。

  • # 1587配列フィールドの以前の値が明示的な nil であった場合、新しい値でアトミックにリセットできるようになりました。

  • 動的フィールドを許可する場合、 は1585に対してModel#respond_to?を返すようになりました。

  • # 1582 nil 値を配列に設定できるようにします。

  • # 1580配列を nil 処理後に設定し、空だけでなく に設定できるようにします。

  • # 1579基準内の個々のセットフィールド要素に対して #to_a を呼び出しないでください。

  • # 1576検証されるフィールドが変更されていない場合は、一意性検証でデータベースにアクセスしないでください。

  • # 1571エイリアス フィールドには、元の名前とエイリアスの両方のすべてのダーティ属性メソッドとすべての getter と setter が取得されます。 (ハンス ハッシュ値)

  • # env が設定されていない場合は、警告を発して開発環境にフォールバックし1568 。

  • # 1565非標準の Ruby またはデータベース名を持つフィールドと外部キーの場合は、アクセスツールとダーティ メソッドを作成するために、 Class_eval ではなく delete_method を使用します。

  • # 1557内部戦略クラスがモデルと競合しなくなりました。

  • # 1551子ドキュメント(埋め込み)ドキュメントのみが変更された場合、親ドキュメントはModel#changed?trueを返すようになりました。

  • # 1547 new がコールバックの処理まで待機するときに親保存から永続化された子をリセットすることで、アップデート機能をミラーリングします。

  • # 1536に含まれる条件が指定されている場合、基準でfirstまたはlastを呼び出すと、読み込みが効率化されます。

2.4.0

新機能

  • カバーの下で $gte/$lte クエリを作成するための条件を #where に範囲を渡すことができるようになりました。 Person.where(dob: start_date...end_date)

  • カスタム直列化可能なフィールドが#選択を上書きして、条件クエリのカスタマイズされた直列化を提供できるようになりました。

  • # 1544内部では、可能な場合、 to_aではなくArray.wrapが使用されるようになりました

  • # 1511存在検証で、ローカライズされたフィールドがサポートされるようになりました (Tigo Rapid Go)

  • # 1506 Model.setが false および nil 値を受け入れるようになりました (MongoDB Atlas)

  • # 1505 Model.delete_all/destroy_allは :条件ハッシュまたは属性を直接指定するようになりました。

  • # 1504 Model.recursively_embeds_manyが :Cascade_colbacks オプションを受け入れるようになりました (ペイル プラバード)

  • # 1496 Mongoid が、別のアプリケーションによって string として保存されるシンボル フィールドのシンボルに string をキャストするようになりました。

  • #1454 、#900 after_build.buildbuild_関連付けには、 メソッドまたは メソッドが呼び出された後に実行される コールバックが追加されました。(ジェフリー・ジョブズ、ライアン・カウントエンド)

  • # 1451範囲が数値だけでなく任意の範囲値になるようになりました (aupajo)

  • # 1448ローカライズがソート時に使用されるようになりました。 (ハンス ハッシュ値)

  • # 1422 Mongoid は、環境が見つからない場合、YAML ロードでエラーを発生させます。 (Tom スループット)

  • 条件1413メソッドに追加された $not はサポートしていません。 (マーク ウィール)

  • # 1403既存のメソッドと同じ名前で名前付きスコープを定義するときにエラーが発生するように、デフォルトで false に設定されている構成オプションscope_overwrite_exceptionを追加しました。 (クライアント グラフ)

  • # 1388 model.add_to_setが複数の値の追加をサポートし、カバーの下で $each を使用して $addToSet を実行するようになりました (フランス語、フェデレーティッド)

  • # 1387 Rails キャッシュで使用するModel#cache_keyを追加しました。 (セカンダリ)

  • #1380 Model.find( ID ) の呼び出しにより、 _idフィールドの型に基づいて、任意の型に適切に変換や変換が行われるようになりました。

  • # 1363ローカライズされたフィールドへのフォールバックとデフォルトのサポートを追加し、すべての翻訳を一度に取得して設定する機能を追加しました。

  • # 1362エイリアス フィールドが基準で適切にタイプキャストされるようになりました。

  • HATM を含む多数の外部キーを含む# 1337配列フィールドは、ダーティ チェックがより合理化され、配列が変更された場合に単純な $set が実行されなくなります。 配列に項目のみが追加されている場合は、 $pushAll が実行されます。 アイテムのみが削除された場合は、 $pullAll が実行されます。 追加と削除の両方が発生した場合は、競合するモードを回避するために $set が実行されます。

解決された問題

  • Rubinian で固定されたドキュメントに対してDocument#as_documentを呼び出すと、nil ではなく 属性が返されます。

  • # 1554デフォルト値の適用をプロシージャと非プロシージャに分割します。非プロシージャはインスタンス化中にすぐに実行され、プロシージャは他のすべての値が設定された後に実行されます。

  • # 1553配列からの値の追加と削除の組み合わせでは、新しい値ではなく、配列の現在の内容に対して $set が使用されます。

  • # 1546ダーティ変更は、異なるアクセス権を持つハッシュで返される必要があります。

  • # 1542の読み込み速度が、関連付けを取得する際に基準に指定されたオプション(スキップ、制限)を尊重するようになりました。

  • # 1530配列が外部キー フィールドである場合、ダーティ追跡経由で配列に追加された値を複製しないでください。

  • #1529 unscoped関係関連付けで の呼び出しが正しく動作するようになりました

  • # 1524外部キーのデフォルト値を事前設定することで、オーバーライド フィールド セッターの関係にアクセスできるようにします。

  • # 1523 disable経由でオブジェクトを無効にできるようにします。 (ジョブ ネーム)

  • # 1522 Rails 3.2のインデックス作成タスクを修正しました。 (グレー語)

  • # 1517 Mongoid ドキュメントが RSpec の stable_model で適切に動作するように修正します。 (Tigo Rapid Go)

  • # 1516バインド時に多数のドキュメントを重複させないでください。

  • # 1515 Mongoid は、デフォルトで複雑な条件でカスタムフィールドを直列化しようとしません。

  • #1503 は多くの関係置換を持ち、既存と新規のDocsのあらゆる種類の組み合わせを処理できるようになりました。

  • # 1502埋め込みドキュメントのネストされた属性は、子がパラメータを持つ場合は を尊重します。

  • # 1497一意性検証に失敗した場合は、提供されたメッセージを使用します。 (Justin Atlas)

  • # 1491ローカライズされたフィールドにデフォルトが設定されていない場合は nil を返します。 (Tigo Rapid Go)

  • # 1483送信モジュールには、実行時に親ドキュメントに新しいフィールドが追加され、サブクラスに追加されるフィールドも含まれます。

  • # 1482新しい並べ替えオプションを適用しても、以前に連鎖された条件にマージされない。 (ガベージ)

  • デフォルトが設定される前に、多対多の関係にアクセスする際に無効な1481を修正しました。

  • カスタム シリアル化可能なタイプの Ruby コア クラスと競合しないようにするために、# 1480 Mongoid の内部シリアル化フィールドタイプの名前が「内部」に変更されました。

  • # 1479 create または create を使用する場合、多対多で ID を重複させないでください。

  • # 1469 exhaust_id が nil を返す場合は、条件セレクターによって ID マップからドキュメントを取得します。

  • # 1467メタデータという名前のフィールドを定義すると、無効なフィールドエラーが適切に発生するようになりました。

  • # 1463コールバック内の他のコレクションへのドキュメントの永続化が間違った場所に行われるのを避けるために、バッチ挿入ユーザーの範囲が コレクションに制限されるようになりました。

  • # 1462の割り当てではネストされた属性を介した多くの関係があります*_attributes=は関係を自動保存しません。

  • # 1461ハッシュ全体がエスケープされないように、複雑な条件内の外部キー フィールドの直列化を修正しました。

  • # 1458のバージョン管理では、一括割り当てから保護されているフィールドがスキップされなくなりました。

  • # 1455 、# 1456任意のドキュメントに対して delete を呼び出すと、操作が完了するまで一時的に破棄のフラグが付けられるようになりました。 (ナーデターク語)

  • # 1453 Model#to_keyはドキュメントが破棄されたときに 値を返す必要があります。

  • # 1449で置き換えられた場合に新しいドキュメントが保持されなくなりました。これには 1 つの副作用があります。 (json 設定)

  • # 1439が埋め込まれていますか は、関係が循環として定義されている場合に true を返す必要があります。

  • 埋め込みおよびリレーショナル1 - 1 1433多形ネストされた属性が正しく更新されるようになりました

  • # 1426凍結されたドキュメントがクローンできるようになりました。 (aagrawal 2001 )

  • # 1382インデックス定義が正しくない場合は、レイテンシ タスクを使用してインデックスを作成する際に適切なエラーが発生します。 (マテリアライズド)

  • # 1381 、 # 1371 ID マップが継承されたドキュメントで適切に機能するようになりました。 (ペイル キャメル)

  • # 1370コールバック実行後の実行の問題により、バッチ処理を処理するために埋め込み配列のconcatを独自のメソッドに分割します。

  • # 1366配列とハッシュの値が、ダーティ追跡のために深くコピーされるようになりました

  • # 1359 Lambda を使用して、すべての名前付きスコープにデフォルトのスコープが適用されないようにする機能を提供します。

  • # 1333名前空間に存在するカスタムタイプに関するエラーを修正しました。 (デターレプリカセット)

  • # 1259デフォルト値はデータベースの状態と異なる場合、ダーティとして扱われます。

  • # 1255埋め込みドキュメントが定義されたデフォルトのスコープを尊重するようにします。

2.3.4

  • # 1445関係関連付けのターゲット列挙型のロード配列内の重複したドキュメントを防止します。

  • # 1442に create_ メソッドを使用すると 1 つの関係がある場合、既存のドキュメントを置き換えるときに適切な破壊的なメソッドが呼び出されるようになりました。

  • # 1431列挙可能なコンテキストは、ロードされた配列の後に追加する必要があるため、 #any などのメソッドはブロックの値に基づくショートカットで、誤って余計なドキュメントが存在しないようにします。

  • # 1418改訂目的でデータベースから読み込まれているドキュメントは、ID マップに配置されなくなりました。

  • # 1399 ID が int として定義されている外部キーで、string を整数に変換するのを許可します。

  • # 1397ソート条件がすでに存在する場合は、最初にデフォルトのソート条件を追加しないでください。

  • # 1394修正は存在しますか?カウントが1より大きい場合に機能します。 (ニク ホフマン)

  • # 1392フィールドが存在しない集計関数で0を返します。

  • # 1391プライマリキー定義を使用している埋め込みドキュメントで、一意性検証が正しく機能するようになりました

  • # 1390 _type フィールドが小文字の場合、クラスは定数化する前にクラスはキャメル化されます。

  • サブクラス化されているシリアル化可能なフィールドの読み取りにおける# 1383を修正します。

  • 1357複数レベルの埋め込みドキュメントの update_attributes からの遅延アトミック セットが適切に永続化されるようになりました

  • # 1326は、新しく構築された子ドキュメントを保存した後に保存されたキーを取得するようにします。

  • # 1301関連に埋め込まれた の基本メタデータを上書きしないでください(すでに設定されている場合は)。

  • 逆 nil を使用した# 1221は、埋め込みドキュメントで再度許可されます。

  • # 1208 embedded_in から設定する場合、 セッターを介して子ドキュメントを自動永続化 しないでください 。

  • # 791ルートドキュメントは、埋め込みドキュメントのみが変更された場合にタイムスタンプを更新します。

2.3.3

解決された問題

  • #1386 mongo / BSON依存関係を 1.3 に削減

  • # 1377 nil または未定義の値を適切に処理できるように集計関数を修正します。 (最大設定(MongoDB)

  • # 1373スコープが別のスコープを上書きする場合は警告を発します。

  • 検証のために読み取り属性内にバインドする場合、# 1372は永続的ではない。

  • # 1364 BSON 以外のオブジェクト ID を持つドキュメントの再読み込みを修正しました。

  • # 1360 Active サポートのロードフック(la-AR)に接続することで Mongoid のオブジェクトをインスタンス化するパフォーマンスを修正しました。

  • # 1358 inverse_ of が nil に設定されている場合に発生する多対多同期のタイプ エラーを修正しました。

  • # 1356 $in 条件は、エラーなく同じキーの非複雑な条件に連鎖できるようになりました。

  • #1350 、#1351 stringdoubleキーをパラメータ化するときに、 引用符とチルダの 変換でエラーを修正しました。

  • # 1349 Mongoid ドキュメントは、Enumerable を含める場合、バーストしないようにする必要があります。 (Jonas Nicklas)

2.3.2

解決された問題

  • # 1347修飾子をキーとして持たないハッシュ値が指定された場合に、埋め込みマッチャーを修正します。

  • # 1346条件で最初または最後に呼び出すときに、デフォルトのソート条件を重複させます。

  • # 1343に引数を渡さない場合、 Criteria#all_ofはすべてのドキュメントを返します。 (Chris Leishman)

  • # 1339ネストされた属性で削除するときに、デプロイメント コールバックがカスケード可能な子で実行されるようにします。

  • # 1324同じクラスを参照する多対多にinverse_of: nilを設定すると、逆外部キーの nil が返されます。

  • # 1323ネストされた属性の属性配列で string と記号の両方を ID として許可します。 (オプションの選択)

  • # 1312構成でロガーを設定すると、ロガーのようなクエリを実行するものはすべて受け入れられるようになりました。

  • # 1297ベースが新しい場合は、関係にアクセスするときにデータベースをヒットしないでください。

  • # 1239デフォルト設定後に作成ブロックで参照関係を追加できるようになりました。

  • # 1236すべてのモデルがレイテンシのタスクにロードされるようになりました。これにより、スレッドセーフ モードでもすべてのインデックスを作成できます。

  • # 736埋め込みドキュメントで #reload を正しく呼び出すようになりました

2.3.1

解決された問題

  • # 1338スコープまたは関係に対して #find を呼び出すと、ID マップ内のドキュメントが他のスコープ パラメータと実際に一致していることが確認されます。

  • # 1321は、以前の不整合ではなく、重複するエントリまたはキーを許可しなくなりました。

  • # 1320 Perf ベンチマークのエラーを修正しました。

  • # 1316は別の Rake タスク "db:mongoid:drop" を追加し、Mongoid とAR が共存できるようにしました。 (デプロイ)

  • # 1311ハッシュから継承するカスタム フィールドの直列化の問題を修正しました。

  • # 1310を参照した多くの列挙可能なターゲットで、ID マップが有効になっている場合、ドキュメントのロードと追加の重複がなくなりました。

  • # 1295を複数含む で、最初の の早期ロードのみを実行する問題を修正しました。

  • # 1287のバージョン管理による最大バージョン数の制限を修正しました。

  • # 1277 App Services は、変更が発生しなかった場合でも、属性に適切にフラグを付けます。

  • # 1063 paranoid ドキュメントがソフト破棄時に破棄コールバックを適切に実行するようになりました

  • # 1061時間直列化が失敗した場合はMongoid::Errors::InvalidTimeを発生させます。

  • #1002 変換を試みるときに、有効なBSON ID を確認します。

  • # 920関係にターゲットとの名前を付けることを許可する。

  • # 905 string がプレフィックス付きの :: で定義されている場合、メタデータで正規化されたクラス名を返します。

  • ハッシュまたは861の配列を使用して埋め込みドキュメントを直接設定する場合、

  • # 857基本ドキュメントがパラノードの場合の依存関係のカスケードを修正しました。

  • # 768モジュール全体での Class_attribute の定義を修正しました。

  • # 408埋め込みドキュメントはMongoid::Paranoia経由でソフト削除できるようになりました。

2.3.0

新機能

  • Mongoid は基本的なローカライズされたフィールドをサポートし、それらをロケール => 値のペアのハッシュとしてカバーの下に保存するようになりました。 field :name, localize: true

  • # 1275セーフモードがデフォルトで true になっているアプリケーションの場合、 安全でない方法で 1 つの操作をセーフ モードで永続化するように指示できるようになりました( person.unsafely.savePerson.unsafely.create 。 (マッチャー)

  • # 1256 Mongoid が Rails エンジンでモデルのインデックスを作成できるようになりました。 (フィルター操作)

  • # 1228ブロックを # キーに渡すことで、複合キーの事前形式設定を許可します。 (ベンガル)

  • # 1222のスコープ付き一括割り当てがサポートされるようになりました (アン値 シャットダウン)

  • # 1196タイムスタンプは、#timeless を使用して、呼び出しごとにオフにできるようになりました( person.timeless.savePerson.timeless.create(:title => "Sir")

  • # 1103開発者が独自のカスタム複雑条件を作成できるようにします。 (Rian Ong)

  • Mongoid には、シリアル化されたドキュメントを ActiveResource クライアントが簡単に使用できるようにするための値がない場合でも、 serializable_hashto_jsonの結果に定義されているすべてのフィールドが含まれるようになりました。

  • MongoDB の $and 演算子のサポートは、次の形式で利用できるようになりました: Criteria#all_of(*args)引数は複数のハッシュ式です。

  • # 1250 、# 1058埋め込みドキュメントでは、関係に:cascade_callbacks => trueを設定することで、親保存でコールバックを実行できるようになりました。 (pyromanic、ポーリング ロザニア、Jak シャード)

主要な変更

  • Mongoid はアクティブ モデル3.1以上に依存するようになりました。

  • mongoは Mongo Rubyドライバー 1.4 以上に依存するようになりました。

  • Mongoid には MongoDB 2.0.0以上が必要です。

解決された問題

  • # 1308 HATTM 検索のスコープを修正しました。

  • # 1300名前空間モデルは再帰埋め込みを適切に処理する必要があります。

  • # 1299バージョン管理を使用した自己参照ドキュメントは、すべての関係で inverse_ of が定義されていない場合に失敗しなくなりました。

  • # 1296内部ビルド メソッドの名前を _Building に変更しました。

  • # 1288 、# 1289 _id および update_at は、バージョン化された属性の一部であってはなりません。

  • 1273 Mongoid.preload_models が、プリロード構成オプションが設定されているかどうかを確認するようになりました は常にすべてをロードします。 (ライアン)

  • # 1244の関係が 1 つあり、デフォルトの依存動作に準拠するようになりました。

  • # 1225 $set 経由の埋め込みドキュメントの遅延永続性を修正しました。

  • # 1166 env 変数が定義されていない場合は、RailTiger で構成を読み込まないでください。 (テナント・リー)

  • # 1052 alias_attributeが期待どおりに再び動作するようになりました

  • 939経由でアップキャストするときに、デフォルトの属性を適用します。 (サブリスト)

  • # 932先頭にゼロがある整数フィールドのキャストを修正しました。

  • # 948バージョンが存在する場合は、クローンのバージョン番号をリセットします。

  • # 763名前付きスコープを連鎖させるときに、$in 基準配列をマージしないでください。

  • # 730元の永続化後に関係が追加された既存のモデルに、移行なしで新しい関係を追加できるようになりました。

  • # 726複合キーを含む埋め込みドキュメントは、一意性を正しく検証しません。

  • # 582循環非埋め込み関係が一意性を正しく検証するようになりました

  • # 484すべてのタイプの複数のスコープによる一意性の検証が正しく機能するようになりました。

  • Mongoid::Versioningで作成されたバージョンを削除しても、関係の依存関係カスケードが起動しなくなりました。

2.2.5

  • これは2.2に対処するための小さなパッチ リリースでした。x アセットのコンパイル中に Helku エラーが発生しました。

2.2.4

  • # 1377 nil または未定義の値を適切に処理できるように集計関数を修正します。 (最大設定(MongoDB)

  • # 1373スコープが別のスコープを上書きする場合は警告を発します。

  • 検証のために読み取り属性内にバインドする場合、# 1372は永続的ではない。

  • # 1358 inverse_ of が nil に設定されている場合に発生する多対多同期のタイプ エラーを修正しました。

  • # 1356 $in 条件は、エラーなく同じキーの非複雑な条件に連鎖できるようになりました。

  • #1350 、#1351 stringdoubleキーをパラメータ化するときに、 引用符とチルダの 変換でエラーが発生する問題を修正しました。

  • # 1349 Mongoid ドキュメントは、Enumerable を含める場合、バーストしないようにする必要があります。 (Jonas Nicklas)

2.2.3

  • # 1295を複数含む で、最初の の早期ロードのみを実行する問題を修正しました。

  • # 1225 $set 経由の埋め込みドキュメントの遅延永続性を修正しました。

  • # 1002 BSON オブジェクト ID の変換を修正して、最初に有効かどうかを確認します。

2.2.2

  • このリリースでは、mongo Ruby ドライバーの1.3 .x に対する依存関係の制限が削除されます。 ユーザーは1.3 .x を使用できるようになりました から1.4 .x

2.2.1

解決された問題

  • # 1210 、 # 517埋め込みドキュメント関係クエリでドット表記を使用できるようにします。 (スコアット エラード)

  • #1198 列挙可能なターゲットは、ロードされているDocsがない場合、条件カウントを使用する必要があります。

  • # 1164残りのメソッド in_memory エラーを排除します。

  • # 1070カスタム フィールド シリアライザーが独自のコンストラクターを持つことを許可します。

  • #1176 after_detroy コールバックに埋め込まれたDocsから親ドキュメントへのアクセスを許可します。

  • # 1191コンテキスト グループ メソッド(最小値、最大値、合計値)は NaN を返さなくなりましたが、フィールドが存在しないか、値がある場合は nil が返されます。

  • # 1193 、 # 1271を持つ整数フィールドでは常に整数が返されます。 000 浮動小数点数ではなく、精度。

  • # 1199複数回読み取る際のハッシュと配列フィールドへのアクセスのパフォーマンスの問題を修正しました。

  • # 1218が整数の外部キーを持つモデルを参照する関係の問題を修正しました。

  • # 1219 1 回の 呼び出しで同じ埋め込みドキュメントからプッシュとプルが行われる際のさまざまな変更の競合の問題を修正しました。

  • # 1220メタデータはバインディング時に nil によって上書きされないようにしてください。

  • # 1231ドキュメントを含めた後に Ruby のネイティブ セットとの競合を避けるために、Mongoid のアトミック セット クラスの名前を セット に変更しました。

  • 番号1232デプロイ コールバック中に関連モデルにアクセスする問題を修正しました。

  • # 1234ドキュメントを破棄する際の SABTM 外部キーの同期の問題を修正しました。

  • # 1243 ID が string として定義されている場合、クエリ時にオブジェクト ID に多形関係は変換されません。

  • # 1247 ID の昇順でソートして最初のドキュメントを保証するようにします。

  • # 1248は多数の関係を埋め込むために #unscoped を追加しました。

  • # 1249ネストされた属性の破棄フラグによって、関係が中断されるだけでなく、has_many のドキュメントが実際に破棄されるようになりました。

  • # 1272レプリカセット接続の作成時に、構成オプションをその場で変更しないでください。

2.2.0

新機能

  • Mongoid にCriteria#includes(*args)の形式での早期ロードが含まれるようになりました。 これは、has_one、has_many、long_to の関連付けで機能し、機能させるには ID マップを有効にする必要があります。 mongoid.ymlidentity_map_enabled: trueを設定します。 例: Person.where(title: "Sir").includes(:posts, :game)

  • 関係では、 :extendオプションの値としてモジュールを指定できるようになりました。 (Roman Shellenz)

  • Capped コレクションは、 #store_inマイクロにオプションを渡すことで作成できます。 Person.store_in :people, capped: true, max: 1000000

  • Mongoid::Collection で をサポートするようになりました collection.find_and_modify

  • Document#has_attribute? は のエイリアスになりました Document#attribute_present?

  • # 930次のことを行うことで、mongoid.yml を介して Mongoid ロガーをオフにすることができます。 logger: false

  • # 909バンド メソッドで永続化し、コールバックが false を返す場合は、以前の非公式の検証エラーではなく、 Mongoid::Errors::Callback例外が発生するようになりました。

主要な変更

  • # 1173の has_many 関係により、関係のセットのすべてのドキュメントが削除されなくなりました(=[ doc_one, doc_double ])が、どのような動作が発生するかを判断するために 依存関係オプションを調べます。 :delete と :delete は以前と同様に動作しますが、 :nullify とオプションが指定されていない場合は、両方とも削除せずに古いドキュメントを null 化します。

  • 埋め込み関係は、親属性セット経由でアクセスしてもすぐに767に保持されなくなり1142 。 これには、ネストされた属性の設定とattributes=またはwrite_attributesの設定が含まれます。 その後、子変更はダーティのままで、または親ドキュメントで保存されるときにアトミックにアップデートされます。

解決された問題

  • # 1190 README と CHANGELOG をマークダウンに変更することによる gemspec エラーを修正しました。

  • # 1180 、# 1084 、# 955 Mongoid は、 基準でオブジェクト ID に変換しようとするときに、名前に/id/が含まれているかどうか、ではなくフィールド型をチェックするようになりました。

  • # 1176列挙可能なターゲットは、 を呼び出すときに、常にメモリ内のドキュメントを最初に返す必要があります #first

  • # 1175作成中に、多対多の関係の両方が同期されていることを確認します。

  • # 1172参照された列挙可能な関係が#to_jsonを適切に処理できるようになりました(MongoDB Ops Manager )

  • # 1040自己クラスへのすべての委任呼び出しを排除することで、クラス ロード時間のパフォーマンスが向上しました。

2.1.9

解決された問題

  • # 1159ネストされたときにビルド ブロックが相互にキャンセルされないように修正しました。

  • # 1154空の配列セット上の多対多ドキュメントを削除しないでください。

  • # 1153コールバック後に親ドキュメント参照を保持するようになりました

  • # 1151自己参照ドキュメントに関連する検証無限ループを修正しました。

  • # 1150 belongs_toに関連付けられている を検証し、デフォルトではfalseです。

  • # 1149 belongs_to関係のメタデータ設定を修正しました。

  • inverse_ofnilに設定されている場合、# 1145メタデータではnilが返されるはずです。

  • # 1139列挙可能なターゲットは配列のように機能するようになりました

  • # 1136 belongs_to親をnilに設定しても親が削除されなくなりました。

  • # 1120関係が応答しない場合は、 in_memoryを呼び出しないでください。

  • # 1075ドキュメント インスタンスへのデフォルトのプロシージャでselfを設定します。

  • # 1072ネストされたドキュメントの書き込み属性には、ハッシュまたはハッシュの配列が必要になる場合があります。

  • # 990埋め込みドキュメントでは、複数の親定義を持つ単一のembedded_inを使用できます。

2.1.8

解決された問題

  • # 1148すべての関係のrespond_to?が正しく返されるように修正しました。

  • # 1146フィールドの定義時に Mongoid の破壊的なフィールド チェックを追加しました。

  • # 1141基準内のnil値の変換を修正しました。

  • # 1131 Mongoid/上でのページ分割を正しく検証しました。

  • # 1105クラスにスコープが設定されたアトミック アップデート コンシューマーを修正しました。

  • デフォルトのラムダとプロシージャ内の# 1075 selfがドキュメント インスタンスを参照するようになりました。

  • # 740 embedded_object_id構成パラメータを削除しました。

  • # 661埋め込みドキュメントのメタデータ キャッシュを修正しました。

  • # 595関係の再ロード フラグを修正しました。

  • # 410ある関係から別の関係へのドキュメントの移動が期待どおりに動作するようになりました

2.1.7

これは MRI 1.8.7を修正するための具体的なリリースでした 2.1.6によって導入された中断。

2.1.6

解決された問題

  • # 1126の他の関係プロキシとの関係の設定を修正しました。

  • # 1122ハッシュと配列フィールドは、アクセスおよび変更時にダーティとして適切にフラグを付けるようになりました。

  • # 656すでに読み込まれた関連付けの設定解除時に発生する再読み込みの重大な関係を修正しました。

  • # 647値を削除するには、 #unsetよりも#remove_attributeが優先されます。

  • # 290が深く埋め込まれたドキュメントにプッシュされることを確認します。

2.1.5

解決された問題

  • # 1116埋め込み子が破棄されるコールバックで親への参照を保持する

  • # 1110 、 # 1115ドキュメントのメタデータ関連のヘルパーをメモリ化しないでください。

  • # 1112 db:create_indexesがサブクラスを複数回インデックスできなくなりました。

  • # 1111 、# 1098 $set操作で_idを設定しないでください。

  • # 1007更新属性は配列の変更を適切に追跡します。

2.1.4

これは、Psych で生成された gemspec を取得するための特定のリリースであり、新しい YAML パーサーを使用している Ruby でこれ以上の解析エラーが発生しなくなりました。

2.1.3

解決された問題

  • # 1109メモリに 1 対 1 でロードされない検証を修正しました。

  • # 1107 Mongoid はapplication.rbで必要なmongoid/railtieが不要になりました。

  • # 1102ネストされた属性の削除を修正しました。

  • # 1097再読み込みでafter_initializeコールバックが実行されるようになりました

  • # 1079重複しなくなったドキュメントを多数埋め込みます。

  • # 1078埋め込みドキュメントで一致する配列条件を修正しました。

  • # 1028は 1 対多と多対多の関係にスコープが設定された を実装します。

  • # 988 Many-tomany クリアが子ドキュメントを削除しなくなりました。

  • # 977関係の自動保存は、ネストされた属性でも機能します。

  • # 972再帰埋め込みが生成された名前の名前空間を処理するようになりました

  • # 943はDocument#attributesを上書きしないでください。

  • # 893は多対多の関係でキャッシュされていないことを確認します。

  • # 815 after_initializeが正しい場所で実行されていることを確認します。

  • # 793 any_ofスコープが他のスコープと適切に連鎖していることを確認します。

  • # 776サブクラスを処理する際の mongoid ケースの品質を修正しました。

  • # 747のキーを使用して string 値をレンダリングする複雑な条件を修正しました。

  • # 721 #safelyでは、検証エラーが発生したときに適切に検証エラーが発生するようになりました。

2.1.2

解決された問題

  • 条件に一致する条件で、# 1082エイリアスsizelengthからcountへの エイリアス 。 (アダム 環境)

  • # 1044同じクラスに対して複数の関係が定義されている場合、 inverse_ofが定義されていない限り、常にデフォルトの逆を最初に返します。

  • # 710ネストされた属性は、ハッシュまたは配列のid_idの両方を受け入れます。

  • # 1047はembeds_manのプッシュと置換に渡されるnil値を無視します。 (デトリック バイリー)

2.1.1

解決された問題

  • #1021、#719 多対多の関係では、新しいドキュメントをプッシュするときに余計なデータベースクエリをtriggerしません。

  • # 607大規模な関連付けでcreateを呼び出しても、関係全体は負荷されません。

  • # 1064 Mongoid::Paranoiaunscopedscopedを尊重する必要があります。

  • # 1026 model#update_attributeでブール値をfalseに更新できるようになりました

  • # 618 Crack XML は、 Stringクラスに#attributesメソッドを追加することで Mongoid ライブラリを中断します。 (ステップダウン)

2.1.0

主要な変更

  • Mongoid では、 #bit#renameのアトミック操作を適切にサポートするために MongoDB 1.8 .x が必要になりました。

  • 従来のスレーブのサポートは Mongoid から削除されました。 レプリカセット は、従来のマスターとスレーブ設定の代わりに使用する必要があります。

  • カスタムフィールドのシリアル化が変更されました。 変更についてはシリアル化可能である を参照してください。

  • ダーティ属性の追跡が ActiveModel を使用するように切り替えられ、これにより多くのバグ修正と変更が行われています。

  • # 756後、コールバックとオブザーバーは old_changes で行われた変更ではなく、何が変更されたかを確認します。

  • # 434ドキュメントが新しい場合、またはインスタンス化の状態がデータベースの状態と異なる場合、ダーティとしてフラグが付けられるようになりました。 これは ActiveRecord と整合性があります。

  • # 323 Mongoid が [field]_write_change をサポートするようになりましたActiveModel::Dirty による

  • 開発モードでプリロードされる Mongoid モデルのデフォルトがfalseになりました。

  • :autosave => true リレーショナル関連付けでは、作成だけでなくアップデートも節約されるようになりました。

  • Mongoid に単純なfind_by_idクエリの ID マップが存在するようになりました。 ドキュメントについては、 Web サイト を参照してください。

新機能

  • # 1067フィールドでは:versioned属性が受け入れられるようになり、 Mongoid::Versioningでバージョン化されるフィールドを無効にできるようになりました。 (Jim Edition)

  • # 587多数の関連付けと多対多の関連付けに順序設定を追加しました。 (グレゴリーマン)

  • order_byステートメントを連鎖させる機能を追加しました。 (グレゴリーマン)

  • # 961任意のMongo::ConnectionオプションがMongoid::Config::Databaseオブジェクトを通過できるようにします。 (モーダル ジャーナル)

  • 多対多の参照に対してautosaveを有効にします。 (デーモン カーネルスキー)

  • 次の明示的なアトミック操作が追加されました: Model#bitModel#popModel#pullModel#push_allModel#renameModel#unset

  • ヒントを含む例外的な翻訳を追加しました。 (スキーアシー)

解決された問題

  • 属性値がfalseになると、 974 attribute_present?が正しく動作するように修正されます。これは @nickffman に提供されています。 (グレゴリーマン)

  • # 960インデックス作成タスクは、ファイル名からモデル名を推測するのに問題があるため、多くの mongoid モデルを認識しません。 (トピア スロットキー)

  • # 874 MM 参照からの削除は一方向であり、 (nichffman、davenkubernetes)

  • Rails 3.1 + で削除された非推奨のclass_inheritable_hashを置き換えます。 (コンシステント シャバノード)

  • 多対多の関係全体を置き換えるときに不整合な状態を修正しました。

  • サブクラス フィールド継承を追加するときに、継承可能な属性を破損しないでください。 (デーモン カーネルスキー)

  • $orセレクターを使用して埋め込みドキュメントをクエリする# 914 。 (最大 ゴロベニア)

  • # 514関係拡張子を持つドキュメントのマーシャリングを修正しました。 (例: された)

  • Metadata#extension が、拡張機能が定義されている場合、 ProcではなくModuleを返すようになりました。

  • # 837 allow_dynamic_fieldsfalseに設定され、かつ認識されないフィールドを持つ埋め込みドキュメントを読み込むと、例外が発生します。

  • # 963ハッシュ経由で埋め込みドキュメントの配列を初期化するようになりました(Tris Griego、Morg Nelson)

  • Mongoid::Config.reset は、オプションをデフォルト値にリセットします。

  • Mongoid::Fields.defaults は、モデルのインスタンス化を高速化するためにメモリ化されています。