delete_all referenced

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Done
    • Priority: Major - P3
    • 6.1.1
    • Affects Version/s: None
    • Component/s: None
    • None
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      (tested with latest 3.x and 4.x versions)

      delete_all does not load referenced document ids from strings like where does, the following:

      #!/usr/bin/env ruby
      require 'mongoid'
      DB_NAME = 'test_delete_all'
      class Band
        include Mongoid::Document
        has_many :members
      end
      class Member
        include Mongoid::Document
        field :name, type: String
        belongs_to :band
      end
      Mongoid.load_configuration(sessions: { default: { database: DB_NAME,
                                                        hosts:    ['localhost'],
                                                        options:  {} } })
      b = Band.create
      bid = b.id.to_s
      alice = b.members.create(name: 'alice')
      bob   = b.members.create(name: 'bob')
      
      puts "Band members count: #{Member.where(band_id: bid).count}"
      puts "Deleting: #{Member.delete_all(band_id: bid)}"
      

      produces:

      ruby test.rb
      Band members count: 2
      Deleting: 0
      

      Using Member.delete_all(band_id: Moped::BSON::ObjectId.from_string(bid)) works but that seems inconsistent with the behavior of where.

              Assignee:
              Unassigned
              Reporter:
              Raphaƫl Simon
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: