Sha256: be407cbed3667cb0c461a4691217752a14ed616e5e97ed9da608b65d57f347a0

Contents?: true

Size: 659 Bytes

Versions: 1

Compression:

Stored size: 659 Bytes

Contents

module Mongoid::Criterion::Optional
  #
  # Overwrite the id method to find objects
  # by the specified slug rather than the id.
  # If you want to find via id you'll have to use
  # An explicit finder like:
  #
  #   where(:_id => some_id)
  #
  alias :id! :id
  def id(*ids)
    if @klass.respond_to?(:acts_as_slugoid_options)
      ids.flatten!
      if ids.size > 1
        self.in(
        @klass.acts_as_slugoid_options[:store_as] => ::BSON::ObjectId.cast!(@klass, ids, @klass.primary_key.nil?)
        )
      else
        @selector[@klass.acts_as_slugoid_options[:store_as]] = ids.first
      end
      self
    else
      id!(*ids)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
slugoid-0.0.4 lib/slugoid/mongoid/criterion/optional.rb