Предположим, participants
содержит 5 участников, которых вы хотите проверить.
participants.all? {|o| o.project }
Это вернет true всех участников проекта, иначе false.
Чтобы вернуть найденный проект, вы можете сделать:
И посмотреть, есть ли у всех участников один и тот же проект:
first_participant = participants.shift
participants.all? {|o| o.project == first_participant.project} unless first_participant.nil?
Преимущество этого метода в том, что он замыкается, если один из участников не имеет такой же проект (более эффективный).
Edit:
Чтобы вернуть проект, которым они все делятся, вы можете сделать:
first_participant = participants.shift
project_shared = participants.all? {|o| o.project == first_participant.project} and first_particpant.project unless first_participant.nil?
project_shared будет установлен для проекта, которым они все делятся, иначе будет nil / false.
Итак, вы можете сделать:
if project_shared
# do work
else
# they dont share a project!
end