2017-05-11 16 views
9

Làm cách nào để thoát truy vấn '@' trong truy vấn SQL.Thoát ký tự '@' trong truy vấn SQL/ActiveRecord

Tôi đang sử dụng ActiveRecord (3).

suite_scenarios = Scenario.where(suite_id: suite_id) 
tag_pair = ["@regression","@daily_feature"] 

tag_pair_scenarios = suite_scenarios.where("metadata LIKE '%#{tag_pair[0]}%'").where("metadata LIKE '%#{tag_pair[1]}%'") 

Trả lời

7

vay từ this answer giải thích làm thế nào để xây dựng các truy vấn iLike với điều kiện giữ chỗ, có vẻ như bạn có thể xây dựng truy vấn của bạn như thế này:

suite_scenarios. 
    where("metadata LIKE '%' || ? || '%'", tag_pair[0]). 
    where("metadata LIKE '%' || ? || '%'", tag_pair[1]") 

này có thêm lợi ích của việc bảo vệ bạn khỏi SQL injection, trong trường hợp tag_pair đến từ đầu vào của người dùng (tham số biểu mẫu).

Các vấn đề liên quan