Estoy tratando de afirmar, usando RSpec, que una consulta de Mongoid determinada no carga el registro, solo verifique su existencia, porque el registro es grande (varios MB), y el código solo necesita saber si o no el registro existe¿Cómo puedo probar el tipo de consulta que generará Mongoid?
He estado jugando con .exists?
en asociaciones, pero por alguna razón que no parece trabajar con has_one
tales como:
class Profile
include Mongoid::Document
has_one :chart
end
class Chart # this is heavy
include Mongoid::Document
belongs_to :profile
end
profile.chart.exists? # fails if chart returns nil
El método de proxy exists?
aparentemente no funciona para has_one
relaciones; aunque está documentado para has_many
. Quiero crear el mío, pero necesito probar en RSpec que de hecho solo se consulta el registro no cargado. Estoy pensando en hacer algo así como probar la consulta subyacente que se genera en el controlador de Mongo, como se puede hacer con .to_sql
. ¿Hay un método Mongoid correspondiente?
Es probable que desee insertar la parte de Mongoid que maneja la transformación de una respuesta BSON en un documento, luego asegúrese de que no se invoque. –
¿Tiene un fragmento de código para mí? Tenía más esperanzas de algo análogo a .to_sql en Arel. Estoy seguro de que está ahí en algún lugar en el fondo, en Moped. –
No sé Mongoid/ciclomotor que bueno, desafortunadamente (mantengo MongoMapper). Si quiere un equivalente de to_sql, querrá ver su 'Mongoid :: Criteria' antes de que se transforme en el documento. El truco será ponerlo en práctica antes de que el criterio se ejecute realmente como una consulta. –