我在代码中偶然发现了这个:
当我在 Rails 中使用 MongoMapper 编写查询时,如下所示:
@res = 客户。哪里({$foo, $bar})
然后我运行@res.inspect - 我得到:
@res is #<MongoMapper::Plugins::Querying::DecoratedPluckyQuery merchant_id: "518b762e89651a0389000013", phone: "**********", transformer: #<Proc:0x007fde074078a0@/usr/local/rvm/gems/ruby-2.0.0-p247/gems/mongo_mapper-0.13.0.beta1/lib/mongo_mapper/plugins/querying.rb:66 (lambda)>>
Ergo - 我的变量是实际的查询字符串。
当我这样改变它时:
@res = 客户。全部({$foo, $bar})
然后@res.inspect - 我得到:
@res is [#<Customer _id: BSON::ObjectId('51a9806589651a05da000001'), account_id: "", admin_id: nil, city_id: "Kailua, Hawaii", company_id: "0", created_at: Sat, 11 May 2013 00:00:00 UTC +00:00, cust_notes: "", datecreated: 2013-01-06 00:00:00 UTC, datemodified: 2013-01-06 00:00:00 UTC, **REMOVED PRIVATE DATA HERE** type: "customer", updated_at: Sun, 15 Sep 2013 22:43:56 UTC +00:00, zip_code: *****>]
Ergo - 它实际上是查询的结果(这是我一直期望的)。
现在奇怪的是,这里的具体区别是我没有做“respond_to do |format|” 而且我没有在视图中访问@res - 我试图查看它的结果仍然在控制器中以用于重定向目的。
因为绝对在我的应用程序的其他任何地方我都在做同样的“Customer.where”或“Job.where”的东西,然后那个实例变量被扔到视图上,我会做类似@customer.name 或其他的事情从数组中获取值。
为什么