我找到了一种用二进制序列将一些数据存储在数据库中的好方法,例如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 方式”。
感谢您的任何想法。