Я хочу хранить IP-адреса (v4 и v6) в моем приложении rails. Я установил расширение для MySQL добавляет функции для преобразования строк 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)).