Поиск битовой маской в ActiveRecord

У меня есть пользовательская таблица с полем битовой маски, которое имеет маску полномочий в ней. Локально, я могу определить, есть ли у пользователя определенное разрешение путем выполнения битовой маски (UserPermissions&Perm)==Perm. Однако я хочу смочь к проблеме a find_by_mask или что-то подобное, возможно, с помощью a :conditions, но я, может казаться, не узнаю, как я могу запросить базу данных для получения списка пользователей с маской разрешения соответствия.

Какое-либо использование идей ActiveRecord?

Конкретно это должно работать с помощью sqlite и пост-ГРЭС

6
задан Mitch Dempsey 2 August 2010 в 03:50
поделиться

1 ответ

На мой взгляд, разумнее всего было бы разбить поле битовой маски на ряд булевых полей. Хранение битовых масок в реляционной базе данных не так уж далеко от хранения разделенных списков в поле - это граничит с денормализацией.

Тем не менее, вы можете использовать побитовое AND в SQL-запросах с помощью оператора &, так что вы можете сказать:

User.where('permissions & ? > 0', Perm)
13
ответ дан 8 December 2019 в 18:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: