У меня есть пользовательская таблица с полем битовой маски, которое имеет маску полномочий в ней. Локально, я могу определить, есть ли у пользователя определенное разрешение путем выполнения битовой маски (UserPermissions&Perm)==Perm
. Однако я хочу смочь к проблеме a find_by_mask
или что-то подобное, возможно, с помощью a :conditions
, но я, может казаться, не узнаю, как я могу запросить базу данных для получения списка пользователей с маской разрешения соответствия.
Какое-либо использование идей ActiveRecord?
Конкретно это должно работать с помощью sqlite и пост-ГРЭС
На мой взгляд, разумнее всего было бы разбить поле битовой маски на ряд булевых полей. Хранение битовых масок в реляционной базе данных не так уж далеко от хранения разделенных списков в поле - это граничит с денормализацией.
Тем не менее, вы можете использовать побитовое AND в SQL-запросах с помощью оператора &, так что вы можете сказать:
User.where('permissions & ? > 0', Perm)