我遗漏了一些简单的东西 - 我不想在视图中访问此查询的结果。
这是查询:
@adm = Admin.where({:id => {"$ne" => params[:id].to_s},:email => params[:email]})
当然,当您检查时,您会得到:
@adm is #<MongoMapper::Plugins::Querying::DecoratedPluckyQuery:0x007fb4be99acd0>
我理解(通过询问 MM 人员)为什么会这样 - 他们希望尽可能长时间地延迟实际查询的结果,并且只获得查询对象的表示,直到我们渲染(在视图中!)。
但是我试图在我的代码中确定的是,如果我的参数之一匹配或不匹配我在控制器中的查询结果,那么我可以返回错误消息或继续。
通常在一个视图中我会这样做:
@adm.id
让BSON摆脱这个。当您在装饰查询上尝试此操作时,它当然会失败:
NoMethodError (undefined method `id' for #<MongoMapper::Plugins::Querying::DecoratedPluckyQuery:0x007fb4b9e9f118>)
这是因为它实际上还不是 Ruby 对象,它仍然是查询代理。
现在我从根本上遗漏了一些东西,因为我从未阅读过“Ruby 入门”指南——我只是在这里闯入并通过蛮力学习。那么,我应该调用什么方法来获取 Plucky Query 的结果呢?