2013-07-23 54 views
4

我使用'mongo', '1.6.2''mongoid', '2.4.11'。 我有ProPlayer模型,當我在控制檯中運行。Mongoid其中對於布爾值沒有工作

irb(main):006:0> ProPlayer.first 
=> #<ProPlayer _id: 508a5549d3966f02e7000001, _type: nil, created_at: nil, updated_at: nil, first_name: "Adam", last_name: "Jones", batting_style: "R", image_thumbnail: "1.jpg", is_pro_player: true, team_id: BSON::ObjectId('508a550ad3966f02ce000012'), token_id: nil> 

這裏用is_pro_player記錄爲true,但是當我運行where查詢時,返回零記錄但實際上有71條記錄存在。

irb(main):008:0> ProPlayer.where(:is_pro_player=>true).to_a.size 
=> 0 

該查詢被工作之前卻突然不工作。誰能告訴我可能是什麼問題?

+0

如果查詢什麼是該記錄的工作? –

+0

@ ChrisHeald:查詢正在mongo中工作。返回正確的記錄,問題是因爲mongoid,我猜。 –

回答

0

嘗試以下操作:

ProPlayer.where(:is_pro_player.exists => true, is_pro_player: true).count 
+0

嘗試無法工作。 :( –

+0

好了,可以請你在做蒙戈控制檯查詢時提供一個匹配文檔的JS哈希使用'findOne({is_pro_player:真})?'功能 –

0

我有同樣的問題,我從可更換式解決它「布爾」到「Mongoid ::布爾」,那麼它將開始把布爾值在DB作爲「真」和「假」,而不是「1」和「0」和「這裏」條件將開始從蒙戈控制檯直接(從而繞過Mongoid類型轉換)再次