gpt4 book ai didi

sql - 如何清理 Arel SQL?

转载 作者:行者123 更新时间:2023-12-05 02:42:41 24 4
gpt4 key购买 nike

我有以下 Arel SQL:

Arel.sql("(users.last_donated_at IS NOT NULL AND users.last_donated_at < '#{User::ACTIVE_DONOR_WITHIN_DAYS.days.ago}')")

我在运行 brakeman 时收到 SQL 注入(inject) 警告。我尝试了以下方法:

Arel.sql("(users.last_donated_at IS NOT NULL AND users.last_donated_at < ?)", User::ACTIVE_DONOR_WITHIN_DAYS.days.ago)

但是,我收到以下错误:

ArgumentError:
wrong number of arguments (given 2, expected 1)

我如何使用 Arel 清理 sql 语句?

最佳答案

我正在回答我自己的问题。我在 Github wiki 之后使用 Arel for Ransack gem。我正在做的事情与文档中提到的第 # 2.2 点非常相似:https://github.com/activerecord-hackery/ransack/wiki/Using-Ransackers .为了清理参数并避免 brakeman sql injection 警告,我最终执行了以下操作:

Arel.sql(sanitize_sql_array("(users.last_donated_at IS NOT NULL AND users.last_donated_at < '#{User::ACTIVE_DONOR_WITHIN_DAYS.days.ago}')"))

关于sql - 如何清理 Arel SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67374536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com