我想在我的 Rails 应用程序中存储 IP 地址(v4 和 v6)。我已经安装了MySQL 的扩展 http://labs.watchmouse.com/2009/10/extending-mysql-5-with-ipv6-functions/添加了将 ip 字符串转换为二进制的函数,这将允许我轻松地按 IP 范围进行查询。
我可以使用未转义的 sql 语句进行 SELECT 类型查询,这很简单。
困难的部分是我还需要一种方法来覆盖插入/更新语句的字段转义方式。
此 ActiveRecord 语句
new_ip = Ip.new
new_ip.start = '1.2.3.4'
new_ip.save
应生成以下 SQL 语句
INSERT INTO ips(start) VALUES(inet6_pton('1.2.3.4'));
有没有办法做到这一点?我尝试了很多事情,包括覆盖ActiveRecord::Base#arel_attributes_values
,不幸的是:生成的 sql 总是转换为二进制(如果这很重要,我的列是 MySQL VARBINARY(16))。
ActiveRecord::Base.connection.execute("INSERT INTO ips(start) VALUES(inet6_pton('1.2.3.4'))")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)