2016-07-12 21 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很好!感谢您的解释。不知道。在哪里(错误)返回所有记录 –