rails活动记录计数方法不计行

时间:2013-01-12 08:56:24

标签: ruby-on-rails ruby-on-rails-3 rails-activerecord

我必须计算查询返回的结果数。我知道有一个count方法可以计算返回的结果数但它不起作用。 这是我的疑问:

@oi_report = IncidentDetailsReport.find_by_case_id(id).count

我得到了这个例外:

undefined method `count' for #<IncidentDetailsReport:0x745def8>

3 个答案:

答案 0 :(得分:2)

您应该使用以下查询

@oi_report = IncidentDetailsReport.where('case_id=?',id).count

在这种情况下不要使用'find_by_case_id'

这将解决您的问题

答案 1 :(得分:2)

显然IncidentDetailsReport.find_by_case_id(id)返回类型为IncidentDetailsReport且没有方法count的对象,这是因为find_by_case_id返回一个对象而不是关系,因为它添加LIMIT 1 1}}到查询。

而不是find_by_*,您可以使用where,例如:

IncidentDetailsReport.where(:case_id => id).count

答案 2 :(得分:2)

根据documentation,您可以通过计数传递条件。所以试着这样做:

IncidentDetailsReport.count(:conditions => "id = "+id)

或者您可以使用length吗?