6

RSpecを使用して、特定のMongoidクエリはレコードをロードせ、その存在を確認するだけであると主張しようとしています. .

私は.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

プロキシ メソッドは明らかに関係exists?には機能しません。has_oneについて文書化されていますがhas_many。自分で作成したいのですが、実際にレコードがロードされずに照会されるだけであることをRSpecでテストする必要があります。でできるように、Mongo ドライバーに対して生成される基になるクエリをテストするようなことを考えています.to_sql。対応する Mongoid メソッドはありますか?

4

2 に答える 2

0
profile.chart.nil?    

動作しませんか?

于 2013-08-17T05:15:43.713 に答える
0

ドライバーでコマンド監視を使用して、データベースに送信された実際のクエリを検査できます。これは、結果を返さないクエリでも機能します (クエリは関係なく送信されるため)。

于 2020-11-20T16:42:35.277 に答える