class Mongoid::Relations::Referenced::One

Private Class Methods

criteria(metadata, object, type = nil) click to toggle source
# File lib/mongoid-multiple-polymorphic/mongoid/relations/referenced/one.rb, line 9
def criteria(metadata, object, type = nil)
  crit = metadata.klass.where(metadata.foreign_key => object)
  if metadata.polymorphic?
    crit = crit.where(metadata.type => type.name)
  end
  inverse_metadata = metadata.inverse_metadata(metadata.klass)
  if inverse_metadata.inverse_of_field
    crit = crit.any_in(inverse_metadata.inverse_of_field => [metadata.name, nil])
  end
  crit
end