我正在尝试对字段不等于特定值的结果进行计数,但它总是无法返回结果。
例如,假设Company和Products有一对多的关系,我可能会通过查询从 ActiveRecord 中获取以下数组Company.find(63).products
(这将是 SQL 的等价物SELECT "products".* FROM "products" WHERE "products"."company_id" = 63;
):
<Product id: 1, company_id: 63, foo_id: 1>,
<Product id: 2, company_id: 63, foo_id: 3>,
<Product id: 3, company_id: 63, foo_id: nil>,
<Product id: 4, company_id: 63, foo_id: nil>
但是,如果我尝试扩展上述查询以计算除第一条记录之外的所有内容,如下所示:
Company.find(63).products.where("foo_id != ?", 1).count
在 SQL 中是:
SELECT COUNT(*) FROM "products" WHERE "products"."company_id" = 63 AND (foo_id != 1)
当我期望看到3时,我似乎总是得到1结果。为什么会发生这种情况,我怎样才能让它正确计数?