У меня есть вопросы, касающиеся внедрения системы, которая будет отправлять сообщения подгруппам людей, находящихся в базе данных.
Получатели [потенциальных] сообщений хранятся в таблице.Каждая запись получателя имеет набор логических значений столбцов, указывающих, являются ли они членами определенной группы или нет: msg_group_1: логическое значение, msg_group_2: логическое значение и т. Д. Получатели могут принадлежать к нескольким группам.Таблица сообщений, где каждая запись сообщения имеет соответствующий набор логических значений для указания групп, для которых предназначено сообщение.
Затем, когда составляется новое сообщение, форма включает в себя флажок, чтобы указать, какие группы сообщенияпредназначен для.
Чтобы реализовать отправку, мне нужно найти всех членов таблицы получателей, принадлежащих к любой из групп, для которых предназначено новое сообщение.
Я могу 't,
Recipients.find(:all, :conditions => ['msg_group_1 = ? OR msg_group_2 = ?', @message.msg_group_1, @message.msg_group_2])
... так как это будет соответствовать записям, в которых логические значения равны, даже если обе пары являются логическими значениями, оба являются ложными (очевидно, я хочу только случаи, когда оба флага истинны).
Существует ли эффективный способ «найти» их с помощью поиска SQL или другого трюка с Ruby on Rails, который позволит получитьсоответствующие записи, где оба флага верны?
Спасибо.