У меня есть отношение has_many моделей Role и Access через модель Permission.
У меня есть ситуация, когда никакие две роли не должны иметь одинаковый доступ. Итак, я создал пользовательскую проверку, которая в основном приводит к сообщению об ошибке, когда текущей роли (создаваемой) назначаются те же права доступа, что и ранее существующим ролям с использованием
errors.add(:Role, "already exists with selected permissions") if Role.all.map(&:access_ids).include?(self.access_ids)
Это все отлично работает. Теперь мне нужно получить роль, доступ к которой идентичен текущей роли. Итак, как мне это сделать? Я пробовал с
Role.includes(:accesses).where(:accesses => {:id => [1,2]}).count
но это возвращает все роли, чьи идентификаторы доступа имеют 1 или 2 (скажем, [1, 2, 3, 4], [1], [2]). Мне нужно получить роль, чьи идентификаторы доступа равны 1 и 2.
Было бы неплохо, если бы я мог заменить '=>' на '==' в приведенном выше запросе :) Но это, очевидно, не работает.