3
我想在我的Rails應用程序中存儲IP地址(v4和v6)。我已經安裝an extension to MySQL增加功能將IP字符串轉換爲二進制,這將允許我容易地查詢IP範圍。使用SQL函數在ActiveRecord中插入/更新
我可以使用非轉義的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))。
呀很好,我想繼續使用的好處定期保存/創建,如果在所有possibble電話和隨之而來(驗證,回調等)一切 – Jimmy
這也不能防止SQL注射 –