【发布时间】:2010-07-06 23:14:21
【问题描述】:
我找到了一种使用二进制序列在数据库中存储一些数据的好方法,例如0b0101000,并在应用掩码后找到给出肯定结果的行。
例如:SELECT (0b0101010 & (1<<3 | 1<<5))>0; 允许我获取第 3 位或第 5 位打开的行,无论其他位是打开还是关闭。
问题是当我想使用 ActiveRecord 执行此操作时。
这种迁移add_column :table, :column, :binary, :limit => 8.bytes 实际上创建了一个TINYBLOBcolumn 而不是BINARY 或VARBINARY,我无法将我的掩码应用于它的值,因为它不被视为二进制值。
我知道我可以通过执行原始 SQL 语句在迁移中创建正确的列格式,然后使用原始 SQL 段查询我的表以获取这部分,但它看起来不像“Rails 方式”。
感谢您的任何想法。
【问题讨论】:
标签: mysql ruby-on-rails binary mask