我發現了一種很好的方法,可以使用二進制序列(如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方式」。
謝謝你的任何想法。
這也是看着AR源代碼後,我的結論。 – jlecour 2010-07-06 09:37:16