2016-07-12 19 views
0

我試圖抓住表中有一列中具有特定值的所有條目,但是我的查詢返回該列中具有零值的結果。Active Record .where發現不符合要求的結果

Merit::ActivityLog.where(:related_change_type== 'Merit::BadgesSash') 

返回一個條目

#<Merit::ActivityLog id: 60, action_id: 102, related_change_type: nil, related_change_id: nil, description: "description text", created_at: "2016-07-12 19:58:05"> 
+1

由於符號與字符串的比較,您的代碼不起作用:':related_change_type =='Merit :: BadgesSash'',這將返回錯誤。基本上查詢結果爲:'Merit :: ActivityLog.where(false)',它返回db中的所有記錄。看到我的回答如下 – oreoluwa

回答

2

我覺得您的查詢應該是:

Merit::ActivityLog.where(related_change_type: 'Merit::BadgesSash') 
0

嘗試Merit::ActivityLog.where(related_change_type: 'Merit::BadgesSash')。如果它不起作用,解決方法是Merit::ActivityLog.where(related_change_type: 'Merit::BadgesSash').reject{|l| l.related_change_type.nil?},但不建議...

+0

由於符號與字符串的比較,OP的代碼不起作用:':related_change_type =='Merit :: BadgesSash'',它將返回false。和'Merit :: ActivityLog.where(false)'返回db中的所有記錄 – oreoluwa

+0

@oreoluwa很好!感謝您的解釋。不知道。在哪裏(錯誤)返回所有記錄 –