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