dim*_*mus 6 activerecord ruby-on-rails
我有一个模型,UUID存储在MySQL表的BINARY(16)字段中.我希望能够透明地将十六进制uuid转换为二进制用于setter方法,并在我使用getter方法时返回.
什么是'正确'的方式进行?
你重写setter和getter:
class User < ActiveRecord::Base
def uuid=(value)
@uuid = write_attribute(:uuid, value.scan(/../).map {|n| n.to_i(16)}.pack("C*"))
end
def uuid
@uuid ||= read_attribute(:uuid).unpack("C*").map {|n| sprintf("%02x", n)}.join
end
end
Run Code Online (Sandbox Code Playgroud)
当然,您需要一个BINARY列,因为您正在向DB发送原始字节.像这样的迁移:
class AddUuidToUsers
def self.up
execute "ALTER TABLE users ADD uuid BINARY(16)"
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1625 次 |
| 最近记录: |