计算实例rails中的false / true值的数量

时间:2016-04-11 15:30:46

标签: ruby-on-rails count boolean

这里是rails的新手。我有那个模型“Checklist”,它只包含布尔字段。 我有一个特定的清单难以返回真值或假值的总和。

例如:

<Checklist id: 1, field1: false, field2: false, field3: false, field4: true >

我怎么知道有3个假值,1个是真的?

我还没有找到怎么做。任何解决方案/资源将不胜感激。感谢

1 个答案:

答案 0 :(得分:1)

您可以使用枚举器方法#select来检查给定参数并计算真或假的响应数(然后知道反向是相反的)。例如(假设这来自表格):

#checklist_controller.rb

def your_controller_method
  true_checked = checklist_params.values.select{ |v| v }.count
  false_checked = checklist_params.keys.count - true_checked
end

private

def checklist_params
  params.permit(:field1, :field2, :field3...)
end

我做了什么的解释:

  • checklist_params是根据用户填写清单的表单传递的内容创建的(同样,我假设这个存在),并且范围仅限于布尔字段(忽略id和timestamps等字段)
  • 在params上调用#values,它将给出响应的所有实际布尔值。这会给我们一个阵列。
  • 从结果数组中选择任何正确的数据(选择将数组中的当前迭代项命名为变量v,然后在v不为false时返回)。
  • 在所选内容上调用#count(这样可以为我们提供所有真实的数量)并将此数字存储为true_checked
  • 通过从checklist_params中设置的字段总数中减去真实答案的总数来计算false_checked。