Проверьте логические атрибуты во всех дочерних объектах в Rails - PullRequest
0 голосов
/ 24 октября 2011

У меня есть модель собрания, в которой есть несколько участников.Участник имеет несколько логических атрибутов: принят, отклонен и т. Д.Я хотел бы проверить всех участников встречи, если они все приняты == верно.Существует ли быстрый способ проверки всех логических атрибутов дочерних объектов, аналогичный методу sum (как в total_price = items.sum (&: price))?

Ответы [ 2 ]

4 голосов
/ 24 октября 2011
meeting.participants.all?(&:acctepted)

Взгляните на перечисляемый модуль

3 голосов
/ 24 октября 2011

Вы можете использовать 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

Вы также можете проверить несколько логических столбцов одновременно.

...