Я нашел хороший способ хранить некоторые данные в базе данных с помощью двоичной последовательности, например 0b0101000
, и находить строки, дающие положительный результат после применения маски.
Например: SELECT (0b0101010 & (1<<3 | 1<<5))>0;
позволяет мне получать строки с 3-м или 5-м битом, независимо от того, включены или выключены другие биты.
Проблема в том, что я хочу сделать это с помощью ActiveRecord. Эта миграция add_column :table, :column, :binary, :limit => 8.bytes
фактически создает столбец TINYBLOB
, а не столбец BINARY
или VARBINARY
, и я не могу применить свою маску к его значению, поскольку оно не считается двоичным значением.
Я знаю, что мог бы сделать правильный формат столбца при миграции, выполнив необработанный оператор SQL, а затем запросить мою таблицу с необработанными сегментами SQL для этой части, но это не похоже на «Путь Rails».
Спасибо за любую идею.