我錯過了一些簡單的 - 我不要想要在視圖中訪問此查詢的結果。如何獲得我的控制器中的Plucky查詢結果?
下面是該查詢:
@adm = Admin.where({:id => {"$ne" => params[:id].to_s},:email => params[:email]})
當然,當你檢查你:
@adm is #<MongoMapper::Plugins::Querying::DecoratedPluckyQuery:0x007fb4be99acd0>
我明白了(從詢問MM的傢伙),爲什麼是這樣的話 - 他們希望儘可能延遲實際查詢的結果,並且只有在渲染之前(在視圖中!)才能獲得查詢對象的表示形式。
但是,我試圖確定在我的代碼是如果我的一個params匹配或不匹配我的查詢結果在控制器,所以我可以返回一個錯誤消息或繼續。
通常在一個視圖我打算做的事:
@adm.id
要獲得BSON出於此。當您嘗試這樣的裝飾查詢當然這失敗:
NoMethodError (undefined method `id' for #<MongoMapper::Plugins::Querying::DecoratedPluckyQuery:0x007fb4b9e9f118>)
這是因爲它實際上不是一個Ruby對象還沒有,它仍然是查詢代理。
現在我從根本上失去了一些東西,因爲我從來沒有讀過「Ruby入門指南」 - 我只是在這裏砸了我的路,並通過蠻力學習。那麼,我要調用什麼方法才能獲得Plucky查詢的結果?
雖然這似乎是答案 - 這不是我所希望的。我知道我的查詢只有一個結果,所以我不想限制它或以任何方式對它進行操作。但是,唉,似乎我必須。 – notaceo
爲什麼這很重要?一旦被查詢,就會被查詢。它不需要再次查詢。 – WiredPrairie
重點是我知道我只會得到一個單一的結果,但我想模糊查詢基於where語句,而不是「find_by_id」或類似的。但是我必須使用find_by_X方法,這是可以的,因爲我沒有絆倒自己尋找一個我還不知道的ID。有時當我不知道我想使用的ID時,但我確實知道另一個字段中的值時,我可以更容易地進行搜索 - 但這意味着我的邏輯很糟糕,我猜... – notaceo