sferik/rails_admin

View on GitHub
lib/rails_admin/adapters/mongoid/bson.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

require 'mongoid'

module RailsAdmin
  module Adapters
    module Mongoid
      class Bson
        OBJECT_ID =
          if defined?(Moped::BSON)
            Moped::BSON::ObjectId
          elsif defined?(BSON::ObjectId)
            BSON::ObjectId
          end

        class << self
          def parse_object_id(value)
            OBJECT_ID.from_string(value)
          rescue StandardError => e
            raise e if %w[
              Moped::Errors::InvalidObjectId
              BSON::ObjectId::Invalid
              BSON::InvalidObjectId
              BSON::Error::InvalidObjectId
            ].exclude?(e.class.to_s)
          end
        end
      end
    end
  end
end