【发布时间】:2011-10-23 20:23:44
【问题描述】:
我有一个包含多个参与者的会议模型。参与者有一些布尔属性:接受、拒绝等。我想检查会议的所有参与者是否都被接受 == true。 有没有一种类似于 sum 方法(如 total_price = items.sum(&:price) )的快速方法来检查子对象的所有布尔属性?
【问题讨论】:
标签: ruby-on-rails ruby activerecord parent-child has-many
我有一个包含多个参与者的会议模型。参与者有一些布尔属性:接受、拒绝等。我想检查会议的所有参与者是否都被接受 == true。 有没有一种类似于 sum 方法(如 total_price = items.sum(&:price) )的快速方法来检查子对象的所有布尔属性?
【问题讨论】:
标签: ruby-on-rails ruby activerecord parent-child has-many
meeting.participants.all?(&:acctepted)
【讨论】:
你可以使用count:
all_true = items.count(:conditions => [ 'bool_column = ?', true ]) == items.count
如果您的布尔列中不需要担心 NULL:
all_true = items.count(:conditions => [ 'bool_column = ?', false ]) == 0
或者你可以这样做(如klochner 所建议的那样)来解决通常的 NULL 问题并避免重复 count:
all_true = items.count(:conditions => [ 'bool_column = ? or bool_column is null', false ]) == 0
您也可以同时检查多个布尔列。
【讨论】: