3
내 레일 어플리케이션에 IP 주소 (v4 및 v6)를 저장하려고합니다. an extension to MySQL은 IP 문자열을 쉽게 IP 범위로 질의 할 수 있도록 바이너리로 변환하는 기능을 추가했습니다.ActiveRecord에서 삽입/업데이트 용 SQL 함수 사용
SELECT 형식 쿼리에 이스케이프 처리되지 않은 SQL 문을 사용할 수 있습니다.
힘든 부분은 필드가 삽입/업데이트 문에 대해 이스케이프 처리되는 방식을 덮어 쓰는 방법이 필요하다는 것입니다.
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 경우를 생성/저장이 또한 SQL에 대해 보호하지 않습니다 – Jimmy
주입 –