Я думаю, что вам пока не следует обращаться к плагинам (например, activ_as_taggable). Я собираюсь дать вам несколько советов, но не очень, потому что выяснить, что работает или нет, это именно то, что поможет вам узнать больше о рельсах.
Итак, у вас будет модель «Клиент» и модель «Кампания». Они имеют отношение N-> N (кампания может включать несколько клиентов, а клиент может быть частью нескольких кампаний).
Следовательно, вам также понадобится другая таблица, в которой будут указаны «client_id» и «campaign_id». Вы также хотите сохранить на этом столе, ответил ли клиент на него, так что ему также понадобится логический флаг «ответил». Если вы называете эту таблицу «campaign_messages», то клиенту нужно будет связываться с кампаниями, используя «has_many: campaigns: through =>: campaign_messages».
С их помощью вы сможете легко перечислить всех клиентов в кампании или всех кампаниях клиента. Вам также, вероятно, не понадобится ресурс REST для campaign_messages, только клиенты и кампании.
Это все детали, которые я собираюсь предоставить вам. Думаю, будет лучше, если вы просто последуете своему подходу и спросите, как его можно улучшить.
Приветствия и удачи