Как проверить тип запроса, который будет генерировать Mongoid?

Я пытаюсь утверждать, используя RSpec, что заданный монгоидный запрос не загрузит запись, просто проверит ее существование, потому что запись большая (несколько МБ), а код должен знать только, существует ли запись.

Я играл с .exists?в ассоциациях, но по какой-то причине это не работает с has_one, например:

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

The существует?метод прокси явно не работает для отношений has_one; хотя это задокументировано для has_many. Я хочу создать свой собственный, но мне нужно проверить в RSpec, что действительно запись только запрашивается, а не загружается. Я думаю о том, чтобы сделать что-то вроде тестирования базового запроса, сгенерированного для драйвера Mongo, как вы можете сделать с .to_sql. Существует ли соответствующий монгоидный метод?

6
задан Wolfram Arnold 20 August 2013 в 18:47
поделиться