セットアップは次のとおりです。
Gemfile:
gem 'mongo_mapper', '>= 0.13.0.beta1'
gem 'plucky', '>= 0.6.5'
コントローラ:
@job = Job.where(:admin_id => a.id)
Rails コンソール出力 (ロガー):
@job is []
1 つの「a.id」値は次のとおりです。
a.id is 51ddbd6b972791243d0000f1
Mongo クエリを直接:
db.jobs.find({ admin_id: "51ddbd6b972791243d0000f1" })
>>>Lots of stuff<<<
幾つか?
> db.jobs.find({ admin_id: "51ddbd6b972791243d0000f1" }).count()
202
では、なぜこのクエリは、Mongo で直接実行すると結果を返し、コントローラーから呼び出されると空の配列を返すのでしょうか?
より具体的には、単純なループは次のとおりです。
@tech_d = []
@tech.each do |a|
Rails.logger.info("a.id is " + a.id)
@job = Job.where(:admin_id => a.id)
Rails.logger.info("@job is " + @job.to_a.to_s)
次のようなものが得られます。
a.id is 51ddbd6b972791243d0000f1
@job is []
a.id is 51f976f2811d830002000adc
@job is []
しかし、私がすでに証明したように、Mongo で直接実行すると、この単純なクエリに対して結果が得られます。
**編集 - mongo_mapper gem 0.12.0 の GA バージョンを試しましたが、結果は同じです (一致するように plucky を 0.5.2 にダウングレードしました - 変更なし)